[INFO] cloning repository https://github.com/proregmao/v2ray_dns
[INFO] running `Command { std: "git" "-c" "credential.helper=" "-c" "credential.helper=/workspace/cargo-home/bin/git-credential-null" "clone" "--bare" "https://github.com/proregmao/v2ray_dns" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fproregmao%2Fv2ray_dns", kill_on_drop: false }`
[INFO] [stderr] Cloning into bare repository '/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fproregmao%2Fv2ray_dns'...
[INFO] running `Command { std: "git" "rev-parse" "HEAD", kill_on_drop: false }`
[INFO] [stdout] 699c1103ea2fb668f0678f851908e43f6053dc33
[INFO] testing proregmao/v2ray_dns against try#0abe69e6c16114311cc2700e972492e64d69c28f for pr-154065-1
[INFO] running `Command { std: "git" "clone" "/workspace/cache/git-repos/https%3A%2F%2Fgithub.com%2Fproregmao%2Fv2ray_dns" "/workspace/builds/worker-4-tc2/source", kill_on_drop: false }`
[INFO] [stderr] Cloning into '/workspace/builds/worker-4-tc2/source'...
[INFO] [stderr] done.
[INFO] started tweaking git repo https://github.com/proregmao/v2ray_dns
[INFO] removed 0 missing examples
[INFO] finished tweaking git repo https://github.com/proregmao/v2ray_dns
[INFO] tweaked toml for git repo https://github.com/proregmao/v2ray_dns written to /workspace/builds/worker-4-tc2/source/Cargo.toml
[INFO] validating manifest of git repo https://github.com/proregmao/v2ray_dns on toolchain 0abe69e6c16114311cc2700e972492e64d69c28f
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--manifest-path" "Cargo.toml" "--no-deps", kill_on_drop: false }`
[INFO] crate git repo https://github.com/proregmao/v2ray_dns already has a lockfile, it will not be regenerated
[INFO] running `Command { std: CARGO_HOME="/workspace/cargo-home" RUSTUP_HOME="/workspace/rustup-home" "/workspace/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "fetch" "--manifest-path" "Cargo.toml", kill_on_drop: false }`
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] [stderr]     Blocking waiting for file lock on package cache
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "metadata" "--no-deps" "--format-version=1", kill_on_drop: false }`
[INFO] [stdout] 4bf5a148e2554f4e00383e55eb697d8130a280daecee0674542417b0f6c3ffa7
[INFO] running `Command { std: "docker" "start" "-a" "4bf5a148e2554f4e00383e55eb697d8130a280daecee0674542417b0f6c3ffa7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "inspect" "4bf5a148e2554f4e00383e55eb697d8130a280daecee0674542417b0f6c3ffa7", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "4bf5a148e2554f4e00383e55eb697d8130a280daecee0674542417b0f6c3ffa7", kill_on_drop: false }`
[INFO] [stdout] 4bf5a148e2554f4e00383e55eb697d8130a280daecee0674542417b0f6c3ffa7
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "build" "--frozen" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 25315087f87f9b00de4263f68dd162d3f9f62169bc2a545ab36e06b4b91f2443
[INFO] running `Command { std: "docker" "start" "-a" "25315087f87f9b00de4263f68dd162d3f9f62169bc2a545ab36e06b4b91f2443", kill_on_drop: false }`
[INFO] [stderr]    Compiling libc v0.2.176
[INFO] [stderr]    Compiling cfg-if v1.0.3
[INFO] [stderr]    Compiling smallvec v1.15.1
[INFO] [stderr]    Compiling tracing-core v0.1.34
[INFO] [stderr]    Compiling find-msvc-tools v0.1.3
[INFO] [stderr]    Compiling syn v2.0.106
[INFO] [stderr]    Compiling indexmap v2.11.4
[INFO] [stderr]    Compiling unicode-normalization v0.1.24
[INFO] [stderr]    Compiling unicode-bidi v0.3.18
[INFO] [stderr]    Compiling regex-syntax v0.8.6
[INFO] [stderr]    Compiling winnow v0.5.40
[INFO] [stderr]    Compiling endian-type v0.1.2
[INFO] [stderr]    Compiling serde_json v1.0.145
[INFO] [stderr]    Compiling anstream v0.6.21
[INFO] [stderr]    Compiling time v0.3.44
[INFO] [stderr]    Compiling hashbrown v0.15.5
[INFO] [stderr]    Compiling encoding_rs v0.8.35
[INFO] [stderr]    Compiling cc v1.2.40
[INFO] [stderr]    Compiling nibble_vec v0.1.0
[INFO] [stderr]    Compiling thread_local v1.1.9
[INFO] [stderr]    Compiling radix_trie v0.2.1
[INFO] [stderr]    Compiling tracing-log v0.2.0
[INFO] [stderr]    Compiling idna v0.4.0
[INFO] [stderr]    Compiling clap_builder v4.5.48
[INFO] [stderr]    Compiling bitflags v2.9.4
[INFO] [stderr]    Compiling nu-ansi-term v0.50.1
[INFO] [stderr]    Compiling lru v0.12.5
[INFO] [stderr]    Compiling cidr v0.2.3
[INFO] [stderr]    Compiling ring v0.17.14
[INFO] [stderr]    Compiling regex-automata v0.4.11
[INFO] [stderr]    Compiling getrandom v0.2.16
[INFO] [stderr]    Compiling parking_lot_core v0.9.12
[INFO] [stderr]    Compiling socket2 v0.6.0
[INFO] [stderr]    Compiling signal-hook-registry v1.4.6
[INFO] [stderr]    Compiling mio v1.0.4
[INFO] [stderr]    Compiling socket2 v0.5.10
[INFO] [stderr]    Compiling dirs-sys v0.4.1
[INFO] [stderr]    Compiling num_cpus v1.17.0
[INFO] [stderr]    Compiling nix v0.27.1
[INFO] [stderr]    Compiling parking_lot v0.12.5
[INFO] [stderr]    Compiling rand_core v0.6.4
[INFO] [stderr]    Compiling dirs v5.0.1
[INFO] [stderr]    Compiling rand_chacha v0.3.1
[INFO] [stderr]    Compiling rand v0.8.5
[INFO] [stderr]    Compiling rustls v0.21.12
[INFO] [stderr]    Compiling synstructure v0.13.2
[INFO] [stderr]    Compiling matchers v0.2.0
[INFO] [stderr]    Compiling regex v1.11.3
[INFO] [stderr]    Compiling zerofrom-derive v0.1.6
[INFO] [stderr]    Compiling yoke-derive v0.8.0
[INFO] [stderr]    Compiling zerovec-derive v0.11.1
[INFO] [stderr]    Compiling serde_derive v1.0.228
[INFO] [stderr]    Compiling displaydoc v0.2.5
[INFO] [stderr]    Compiling tokio-macros v2.5.0
[INFO] [stderr]    Compiling futures-macro v0.3.31
[INFO] [stderr]    Compiling tracing-attributes v0.1.30
[INFO] [stderr]    Compiling thiserror-impl v1.0.69
[INFO] [stderr]    Compiling async-trait v0.1.89
[INFO] [stderr]    Compiling enum-as-inner v0.6.1
[INFO] [stderr]    Compiling clap_derive v4.5.47
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling sct v0.7.1
[INFO] [stderr]    Compiling rustls-webpki v0.101.7
[INFO] [stderr]    Compiling futures-util v0.3.31
[INFO] [stderr]    Compiling zerofrom v0.1.6
[INFO] [stderr]    Compiling yoke v0.8.0
[INFO] [stderr]    Compiling thiserror v1.0.69
[INFO] [stderr]    Compiling tracing v0.1.41
[INFO] [stderr]    Compiling zerovec v0.11.4
[INFO] [stderr]    Compiling zerotrie v0.2.2
[INFO] [stderr]    Compiling clap v4.5.48
[INFO] [stderr]    Compiling tinystr v0.8.1
[INFO] [stderr]    Compiling potential_utf v0.1.3
[INFO] [stderr]    Compiling icu_collections v2.0.0
[INFO] [stderr]    Compiling icu_locale_core v2.0.0
[INFO] [stderr]    Compiling serde v1.0.228
[INFO] [stderr]    Compiling icu_provider v2.0.0
[INFO] [stderr]    Compiling serde_spanned v0.6.9
[INFO] [stderr]    Compiling toml_datetime v0.6.11
[INFO] [stderr]    Compiling tracing-serde v0.2.0
[INFO] [stderr]    Compiling serde_urlencoded v0.7.1
[INFO] [stderr]    Compiling serde_yaml v0.9.34+deprecated
[INFO] [stderr]    Compiling chrono v0.4.42
[INFO] [stderr]    Compiling tracing-subscriber v0.3.20
[INFO] [stderr]    Compiling toml_edit v0.19.15
[INFO] [stderr]    Compiling icu_normalizer v2.0.0
[INFO] [stderr]    Compiling icu_properties v2.0.1
[INFO] [stderr]    Compiling futures-executor v0.3.31
[INFO] [stderr]    Compiling futures v0.3.31
[INFO] [stderr]    Compiling idna_adapter v1.2.1
[INFO] [stderr]    Compiling idna v1.1.0
[INFO] [stderr]    Compiling url v2.5.7
[INFO] [stderr]    Compiling toml v0.7.8
[INFO] [stderr]    Compiling tokio-util v0.7.16
[INFO] [stderr]    Compiling trust-dns-proto v0.23.2
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling drain v0.1.2
[INFO] [stderr]    Compiling hickory-proto v0.24.4
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling hickory-client v0.24.4
[INFO] [stderr]    Compiling trust-dns-client v0.23.2
[INFO] [stderr]    Compiling trust-dns-server v0.23.2
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling smart-dns-server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/cli/mod.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/launcher/mod.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, error, warn};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/system/port_manager.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::timeout`
[INFO] [stdout]  --> src/system/port_manager.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::time::timeout;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/port_manager.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/system/port_manager.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/iptables.rs:6:34
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/dns_manager.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/system/problem_solver.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/problem_solver.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/system/problem_solver.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/dns/handler.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Name`
[INFO] [stdout]  --> src/dns/simple_server.rs:9:54
[INFO] [stdout]   |
[INFO] [stdout] 9 | use trust_dns_proto::rr::{RecordType, RData, Record, Name};
[INFO] [stdout]   |                                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trust_dns_proto::rr::RecordType`
[INFO] [stdout]   --> src/dns/optimized_server.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use trust_dns_proto::rr::RecordType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DomainCategory`
[INFO] [stdout]   --> src/dns/optimized_server.rs:17:62
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::classifier::domain_classifier::{DomainClassifier, DomainCategory};
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/classifier/domain_classifier.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RulePriority`
[INFO] [stdout]   --> src/classifier/domain_classifier.rs:11:62
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::classifier::rules::{ClassificationRule, RuleType, RulePriority};
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]  --> src/classifier/geosite.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                           ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/upstream/manager.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{info, warn, debug, error};
[INFO] [stdout]    |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/upstream/pool.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::{info, warn, error, debug, instrument};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::seq::SliceRandom`
[INFO] [stdout]   --> src/upstream/pool.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use rand::seq::SliceRandom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `info`
[INFO] [stdout]  --> src/upstream/encrypted_dns.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |               ^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RData`
[INFO] [stdout]  --> src/upstream/encrypted_dns.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use trust_dns_proto::rr::{RecordType, RData};
[INFO] [stdout]   |                                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv6Addr`
[INFO] [stdout]  --> src/validator/expected_ip.rs:5:34
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/validator/expected_ip.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/validator/expected_ip.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/cache/ttl.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/cache/safe_cache.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/cache/safe_cache.rs:10:28
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/utils/logging.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/utils/network.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/dns/server.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |             return Ok(());
[INFO] [stdout]     |             ------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 199 |         self.cleanup().await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns/handler.rs:137:35
[INFO] [stdout]     |
[INFO] [stdout] 137 |     async fn process_query(&self, mut request: Message) -> Result<Message> {
[INFO] [stdout]     |                                   ----^^^^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/upstream/pool.rs:179:17
[INFO] [stdout]     |
[INFO] [stdout] 179 |             let mut servers = healthy_servers;
[INFO] [stdout]     |                 ----^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/config/mod.rs:284:34
[INFO] [stdout]     |
[INFO] [stdout] 284 |     pub fn merge_with(&mut self, other: &SmartDnsConfig) {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `domain`
[INFO] [stdout]    --> src/system/problem_solver.rs:291:38
[INFO] [stdout]     |
[INFO] [stdout] 291 |     async fn query_dns_server(&self, domain: &str, dns_server: &str) -> Result<Vec<IpAddr>> {
[INFO] [stdout]     |                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns/handler.rs:262:37
[INFO] [stdout]     |
[INFO] [stdout] 262 |     fn create_error_response(&self, mut request: Message, error_code: ResponseCode) -> Result<Message> {
[INFO] [stdout]     |                                     ----^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ips`
[INFO] [stdout]    --> src/dns/optimized_server.rs:261:45
[INFO] [stdout]     |
[INFO] [stdout] 261 |     fn create_dns_response(query: &Message, ips: Vec<IpAddr>) -> Result<Message> {
[INFO] [stdout]     |                                             ^^^ help: if this is intentional, prefix it with an underscore: `_ips`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/cache/lru_cache.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/cache/safe_cache.rs:88:21
[INFO] [stdout]    |
[INFO] [stdout] 88 |         if let Some(mut record) = cache.get_mut(domain) {
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_filter`
[INFO] [stdout]   --> src/utils/logging.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let env_filter = EnvFilter::new(level);
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/system/problem_solver.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SystemProblemSolver {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 15 |     config: Arc<SmartDnsConfig>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `query_servers`, `query_servers_concurrent`, and `query_single_server_static` are never used
[INFO] [stdout]    --> src/upstream/manager.rs:329:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl UpstreamDnsManager {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 329 |     async fn query_servers(&self, request: &Message, servers: &[SocketAddr]) -> Result<Message> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     async fn query_servers_concurrent(&self, request: &Message, servers: &[SocketAddr]) -> Result<Vec<Message>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 442 |     async fn query_single_server_static(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout` is never read
[INFO] [stdout]   --> src/upstream/encrypted_dns.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct EncryptedDnsClient {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncryptedDnsClient` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `status` is never read
[INFO] [stdout]    --> src/upstream/encrypted_dns.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 143 | struct DoHResponse {
[INFO] [stdout]     |        ----------- field in this struct
[INFO] [stdout] 144 |     #[serde(rename = "Status")]
[INFO] [stdout] 145 |     status: Option<i32>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DoHResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `record_type` are never read
[INFO] [stdout]    --> src/upstream/encrypted_dns.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 152 | struct DoHAnswer {
[INFO] [stdout]     |        --------- fields in this struct
[INFO] [stdout] 153 |     #[serde(rename = "name")]
[INFO] [stdout] 154 |     name: Option<String>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 155 |     #[serde(rename = "type")]
[INFO] [stdout] 156 |     record_type: Option<i32>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DoHAnswer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `alert_states` is never read
[INFO] [stdout]   --> src/stats/monitor.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SystemMonitor {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     alert_states: AlertStates,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SystemMonitor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cpu_alert_active`, `memory_alert_active`, `dns_success_rate_alert_active`, `cache_hit_rate_alert_active`, and `response_time_alert_active` are never read
[INFO] [stdout]    --> src/stats/monitor.rs:97:5
[INFO] [stdout]     |
[INFO] [stdout]  96 | struct AlertStates {
[INFO] [stdout]     |        ----------- fields in this struct
[INFO] [stdout]  97 |     cpu_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     memory_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     dns_success_rate_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     cache_hit_rate_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 101 |     response_time_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AlertStates` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/config/mod.rs:186:29
[INFO] [stdout]     |
[INFO] [stdout] 186 |             if port == 0 || port > 65535 {
[INFO] [stdout]     |                             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 159 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 159 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 198 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 198 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/simple_main.rs:59:9
[INFO] [stdout]    |
[INFO] [stdout] 59 |     let mut dns_server = SimpleDnsServer::new(config).await
[INFO] [stdout]    |         ----^^^^^^^^^^
[INFO] [stdout]    |         |
[INFO] [stdout]    |         help: remove this `mut`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/optimized_main.rs:146:9
[INFO] [stdout]     |
[INFO] [stdout] 146 |     let mut dns_server = OptimizedDnsServer::new(server_config).await
[INFO] [stdout]     |         ----^^^^^^^^^^
[INFO] [stdout]     |         |
[INFO] [stdout]     |         help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/optimized_main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct AppState {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     config: SmartDnsConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/simple_optimized_main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct AppState {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     config: SmartDnsConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dns_server_clone`
[INFO] [stdout]    --> src/reliable_main.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let dns_server_clone = dns_server.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dns_server_clone`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_network_connectivity` is never used
[INFO] [stdout]    --> src/reliable_main.rs:216:10
[INFO] [stdout]     |
[INFO] [stdout] 216 | async fn test_network_connectivity() -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_dns_resolution` is never used
[INFO] [stdout]    --> src/reliable_main.rs:237:10
[INFO] [stdout]     |
[INFO] [stdout] 237 | async fn test_dns_resolution() -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `port` is never used
[INFO] [stdout]    --> src/reliable_dns_server.rs:386:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl ReliableDnsServer {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub fn port(&self) -> u16 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr]     Finished `dev` profile [unoptimized + debuginfo] target(s) in 21.99s
[INFO] running `Command { std: "docker" "inspect" "25315087f87f9b00de4263f68dd162d3f9f62169bc2a545ab36e06b4b91f2443", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "25315087f87f9b00de4263f68dd162d3f9f62169bc2a545ab36e06b4b91f2443", kill_on_drop: false }`
[INFO] [stdout] 25315087f87f9b00de4263f68dd162d3f9f62169bc2a545ab36e06b4b91f2443
[INFO] running `Command { std: "docker" "create" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/target:/opt/rustwide/target:rw,Z" "-v" "/var/lib/crater-agent-workspace/builds/worker-4-tc2/source:/opt/rustwide/workdir:ro,Z" "-v" "/var/lib/crater-agent-workspace/cargo-home:/opt/rustwide/cargo-home:ro,Z" "-v" "/var/lib/crater-agent-workspace/rustup-home:/opt/rustwide/rustup-home:ro,Z" "-e" "SOURCE_DIR=/opt/rustwide/workdir" "-e" "CARGO_TARGET_DIR=/opt/rustwide/target" "-e" "CARGO_INCREMENTAL=0" "-e" "RUST_BACKTRACE=full" "-e" "RUSTFLAGS=--cap-lints=forbid" "-e" "RUSTDOCFLAGS=--cap-lints=forbid" "-e" "CARGO_HOME=/opt/rustwide/cargo-home" "-e" "RUSTUP_HOME=/opt/rustwide/rustup-home" "-w" "/opt/rustwide/workdir" "-m" "1610612736" "--user" "0:0" "--network" "none" "ghcr.io/rust-lang/crates-build-env/linux@sha256:d429b63d4308055ea97f60fb1d3dfca48854a00942f1bd2ad806beaf015945ec" "/opt/rustwide/cargo-home/bin/cargo" "+0abe69e6c16114311cc2700e972492e64d69c28f" "test" "--frozen" "--no-run" "--message-format=json", kill_on_drop: false }`
[INFO] [stdout] 354de0b60702c3bb8356f430f448c89119b9aeb34c72a287ce526b10f69e708c
[INFO] running `Command { std: "docker" "start" "-a" "354de0b60702c3bb8356f430f448c89119b9aeb34c72a287ce526b10f69e708c", kill_on_drop: false }`
[INFO] [stderr]    Compiling tokio v1.47.1
[INFO] [stderr]    Compiling bitflags v2.9.4
[INFO] [stderr]    Compiling rustix v1.1.2
[INFO] [stderr]    Compiling getrandom v0.3.3
[INFO] [stderr]    Compiling async-stream-impl v0.3.6
[INFO] [stderr]    Compiling nix v0.27.1
[INFO] [stderr]    Compiling async-stream v0.3.6
[INFO] [stderr]    Compiling tempfile v3.23.0
[INFO] [stderr]    Compiling tokio-util v0.7.16
[INFO] [stderr]    Compiling tokio-rustls v0.24.1
[INFO] [stderr]    Compiling trust-dns-proto v0.23.2
[INFO] [stderr]    Compiling hickory-proto v0.24.4
[INFO] [stderr]    Compiling drain v0.1.2
[INFO] [stderr]    Compiling tokio-stream v0.1.17
[INFO] [stderr]    Compiling tokio-test v0.4.4
[INFO] [stderr]    Compiling h2 v0.3.27
[INFO] [stderr]    Compiling trust-dns-server v0.23.2
[INFO] [stderr]    Compiling trust-dns-client v0.23.2
[INFO] [stderr]    Compiling hickory-client v0.24.4
[INFO] [stderr]    Compiling hyper v0.14.32
[INFO] [stderr]    Compiling hyper-rustls v0.24.2
[INFO] [stderr]    Compiling reqwest v0.11.27
[INFO] [stderr]    Compiling smart-dns-server v0.1.0 (/opt/rustwide/workdir)
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/cli/mod.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/launcher/mod.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, error, warn};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/system/port_manager.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::timeout`
[INFO] [stdout]  --> src/system/port_manager.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::time::timeout;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/port_manager.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/system/port_manager.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/iptables.rs:6:34
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/dns_manager.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/system/problem_solver.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/problem_solver.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/system/problem_solver.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/dns/handler.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Name`
[INFO] [stdout]  --> src/dns/simple_server.rs:9:54
[INFO] [stdout]   |
[INFO] [stdout] 9 | use trust_dns_proto::rr::{RecordType, RData, Record, Name};
[INFO] [stdout]   |                                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trust_dns_proto::rr::RecordType`
[INFO] [stdout]   --> src/dns/optimized_server.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use trust_dns_proto::rr::RecordType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DomainCategory`
[INFO] [stdout]   --> src/dns/optimized_server.rs:17:62
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::classifier::domain_classifier::{DomainClassifier, DomainCategory};
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/classifier/domain_classifier.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RulePriority`
[INFO] [stdout]   --> src/classifier/domain_classifier.rs:11:62
[INFO] [stdout]    |
[INFO] [stdout] 11 | use crate::classifier::rules::{ClassificationRule, RuleType, RulePriority};
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]  --> src/classifier/geosite.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                           ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/upstream/manager.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{info, warn, debug, error};
[INFO] [stdout]    |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/upstream/pool.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::{info, warn, error, debug, instrument};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::seq::SliceRandom`
[INFO] [stdout]   --> src/upstream/pool.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use rand::seq::SliceRandom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `info`
[INFO] [stdout]  --> src/upstream/encrypted_dns.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |               ^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RData`
[INFO] [stdout]  --> src/upstream/encrypted_dns.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use trust_dns_proto::rr::{RecordType, RData};
[INFO] [stdout]   |                                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv6Addr`
[INFO] [stdout]  --> src/validator/expected_ip.rs:5:34
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/validator/expected_ip.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/validator/expected_ip.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/cache/ttl.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/cache/safe_cache.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/cache/safe_cache.rs:10:28
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/utils/logging.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/utils/network.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/dns/server.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |             return Ok(());
[INFO] [stdout]     |             ------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 199 |         self.cleanup().await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns/handler.rs:137:35
[INFO] [stdout]     |
[INFO] [stdout] 137 |     async fn process_query(&self, mut request: Message) -> Result<Message> {
[INFO] [stdout]     |                                   ----^^^^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/upstream/pool.rs:179:17
[INFO] [stdout]     |
[INFO] [stdout] 179 |             let mut servers = healthy_servers;
[INFO] [stdout]     |                 ----^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]   --> src/lib.rs:27:5
[INFO] [stdout]    |
[INFO] [stdout] 27 | use std::time::Duration;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/cli/mod.rs:6:22
[INFO] [stdout]   |
[INFO] [stdout] 6 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/launcher/mod.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, error, warn};
[INFO] [stdout]   |                     ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::time::Duration`
[INFO] [stdout]  --> src/system/port_manager.rs:6:5
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::Duration;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio::time::timeout`
[INFO] [stdout]  --> src/system/port_manager.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tokio::time::timeout;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/port_manager.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/system/port_manager.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `tokio_test`
[INFO] [stdout]    --> src/system/port_manager.rs:144:9
[INFO] [stdout]     |
[INFO] [stdout] 144 |     use tokio_test;
[INFO] [stdout]     |         ^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/iptables.rs:6:34
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/dns_manager.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::io::Write`
[INFO] [stdout]  --> src/system/problem_solver.rs:4:5
[INFO] [stdout]   |
[INFO] [stdout] 4 | use std::io::Write;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/system/problem_solver.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> src/system/problem_solver.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/dns/handler.rs:8:34
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Name`
[INFO] [stdout]  --> src/dns/simple_server.rs:9:54
[INFO] [stdout]   |
[INFO] [stdout] 9 | use trust_dns_proto::rr::{RecordType, RData, Record, Name};
[INFO] [stdout]   |                                                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `trust_dns_proto::rr::RecordType`
[INFO] [stdout]   --> src/dns/optimized_server.rs:12:5
[INFO] [stdout]    |
[INFO] [stdout] 12 | use trust_dns_proto::rr::RecordType;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `DomainCategory`
[INFO] [stdout]   --> src/dns/optimized_server.rs:17:62
[INFO] [stdout]    |
[INFO] [stdout] 17 | use crate::classifier::domain_classifier::{DomainClassifier, DomainCategory};
[INFO] [stdout]    |                                                              ^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/classifier/domain_classifier.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `debug` and `error`
[INFO] [stdout]  --> src/classifier/geosite.rs:7:27
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                           ^^^^^  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/upstream/manager.rs:10:34
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{info, warn, debug, error};
[INFO] [stdout]    |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]   --> src/upstream/pool.rs:15:27
[INFO] [stdout]    |
[INFO] [stdout] 15 | use tracing::{info, warn, error, debug, instrument};
[INFO] [stdout]    |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `rand::seq::SliceRandom`
[INFO] [stdout]   --> src/upstream/pool.rs:17:5
[INFO] [stdout]    |
[INFO] [stdout] 17 | use rand::seq::SliceRandom;
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `error` and `info`
[INFO] [stdout]  --> src/upstream/encrypted_dns.rs:4:15
[INFO] [stdout]   |
[INFO] [stdout] 4 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |               ^^^^        ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `RData`
[INFO] [stdout]  --> src/upstream/encrypted_dns.rs:6:39
[INFO] [stdout]   |
[INFO] [stdout] 6 | use trust_dns_proto::rr::{RecordType, RData};
[INFO] [stdout]   |                                       ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv6Addr`
[INFO] [stdout]  --> src/validator/expected_ip.rs:5:34
[INFO] [stdout]   |
[INFO] [stdout] 5 | use std::net::{IpAddr, Ipv4Addr, Ipv6Addr};
[INFO] [stdout]   |                                  ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/validator/expected_ip.rs:7:34
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn, debug, error};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]  --> src/validator/expected_ip.rs:8:22
[INFO] [stdout]   |
[INFO] [stdout] 8 | use anyhow::{Result, Context};
[INFO] [stdout]   |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> src/cache/ttl.rs:9:22
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{debug, warn};
[INFO] [stdout]   |                      ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/cache/safe_cache.rs:7:5
[INFO] [stdout]   |
[INFO] [stdout] 7 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]   --> src/cache/safe_cache.rs:10:28
[INFO] [stdout]    |
[INFO] [stdout] 10 | use tracing::{debug, info, warn};
[INFO] [stdout]    |                            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `error`
[INFO] [stdout]  --> src/utils/logging.rs:5:27
[INFO] [stdout]   |
[INFO] [stdout] 5 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                           ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::collections::HashMap`
[INFO] [stdout]  --> src/utils/network.rs:8:5
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::collections::HashMap;
[INFO] [stdout]   |     ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `super::*`
[INFO] [stdout]  --> src/test_duration.rs:3:9
[INFO] [stdout]   |
[INFO] [stdout] 3 |     use super::*;
[INFO] [stdout]   |         ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unreachable statement
[INFO] [stdout]    --> src/dns/server.rs:199:9
[INFO] [stdout]     |
[INFO] [stdout] 183 |             return Ok(());
[INFO] [stdout]     |             ------------- any code following this expression is unreachable
[INFO] [stdout] ...
[INFO] [stdout] 199 |         self.cleanup().await?;
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unreachable statement
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unreachable_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/config/mod.rs:284:34
[INFO] [stdout]     |
[INFO] [stdout] 284 |     pub fn merge_with(&mut self, other: &SmartDnsConfig) {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns/handler.rs:137:35
[INFO] [stdout]     |
[INFO] [stdout] 137 |     async fn process_query(&self, mut request: Message) -> Result<Message> {
[INFO] [stdout]     |                                   ----^^^^^^^
[INFO] [stdout]     |                                   |
[INFO] [stdout]     |                                   help: remove this `mut`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_mut)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `domain`
[INFO] [stdout]    --> src/system/problem_solver.rs:291:38
[INFO] [stdout]     |
[INFO] [stdout] 291 |     async fn query_dns_server(&self, domain: &str, dns_server: &str) -> Result<Vec<IpAddr>> {
[INFO] [stdout]     |                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns/handler.rs:262:37
[INFO] [stdout]     |
[INFO] [stdout] 262 |     fn create_error_response(&self, mut request: Message, error_code: ResponseCode) -> Result<Message> {
[INFO] [stdout]     |                                     ----^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ips`
[INFO] [stdout]    --> src/dns/optimized_server.rs:261:45
[INFO] [stdout]     |
[INFO] [stdout] 261 |     fn create_dns_response(query: &Message, ips: Vec<IpAddr>) -> Result<Message> {
[INFO] [stdout]     |                                             ^^^ help: if this is intentional, prefix it with an underscore: `_ips`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/cache/lru_cache.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/cache/safe_cache.rs:88:21
[INFO] [stdout]    |
[INFO] [stdout] 88 |         if let Some(mut record) = cache.get_mut(domain) {
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/upstream/pool.rs:179:17
[INFO] [stdout]     |
[INFO] [stdout] 179 |             let mut servers = healthy_servers;
[INFO] [stdout]     |                 ----^^^^^^^
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_filter`
[INFO] [stdout]   --> src/utils/logging.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let env_filter = EnvFilter::new(level);
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/system/problem_solver.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SystemProblemSolver {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 15 |     config: Arc<SmartDnsConfig>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `query_servers`, `query_servers_concurrent`, and `query_single_server_static` are never used
[INFO] [stdout]    --> src/upstream/manager.rs:329:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl UpstreamDnsManager {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 329 |     async fn query_servers(&self, request: &Message, servers: &[SocketAddr]) -> Result<Message> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     async fn query_servers_concurrent(&self, request: &Message, servers: &[SocketAddr]) -> Result<Vec<Message>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 442 |     async fn query_single_server_static(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout` is never read
[INFO] [stdout]   --> src/upstream/encrypted_dns.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct EncryptedDnsClient {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncryptedDnsClient` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `status` is never read
[INFO] [stdout]    --> src/upstream/encrypted_dns.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 143 | struct DoHResponse {
[INFO] [stdout]     |        ----------- field in this struct
[INFO] [stdout] 144 |     #[serde(rename = "Status")]
[INFO] [stdout] 145 |     status: Option<i32>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DoHResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `record_type` are never read
[INFO] [stdout]    --> src/upstream/encrypted_dns.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 152 | struct DoHAnswer {
[INFO] [stdout]     |        --------- fields in this struct
[INFO] [stdout] 153 |     #[serde(rename = "name")]
[INFO] [stdout] 154 |     name: Option<String>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 155 |     #[serde(rename = "type")]
[INFO] [stdout] 156 |     record_type: Option<i32>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DoHAnswer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `alert_states` is never read
[INFO] [stdout]   --> src/stats/monitor.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SystemMonitor {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     alert_states: AlertStates,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SystemMonitor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cpu_alert_active`, `memory_alert_active`, `dns_success_rate_alert_active`, `cache_hit_rate_alert_active`, and `response_time_alert_active` are never read
[INFO] [stdout]    --> src/stats/monitor.rs:97:5
[INFO] [stdout]     |
[INFO] [stdout]  96 | struct AlertStates {
[INFO] [stdout]     |        ----------- fields in this struct
[INFO] [stdout]  97 |     cpu_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     memory_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     dns_success_rate_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     cache_hit_rate_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 101 |     response_time_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AlertStates` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/config/mod.rs:186:29
[INFO] [stdout]     |
[INFO] [stdout] 186 |             if port == 0 || port > 65535 {
[INFO] [stdout]     |                             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 159 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 159 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 198 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 198 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `other`
[INFO] [stdout]    --> src/config/mod.rs:284:34
[INFO] [stdout]     |
[INFO] [stdout] 284 |     pub fn merge_with(&mut self, other: &SmartDnsConfig) {
[INFO] [stdout]     |                                  ^^^^^ help: if this is intentional, prefix it with an underscore: `_other`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `args`
[INFO] [stdout]    --> src/launcher/mod.rs:225:13
[INFO] [stdout]     |
[INFO] [stdout] 225 |         let args = CliArgs {
[INFO] [stdout]     |             ^^^^ help: if this is intentional, prefix it with an underscore: `_args`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/system/signal_handler.rs:298:13
[INFO] [stdout]     |
[INFO] [stdout] 298 |         let mut shutdown = GracefulShutdown::new();
[INFO] [stdout]     |             ----^^^^^^^^
[INFO] [stdout]     |             |
[INFO] [stdout]     |             help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `cleanup_flag`
[INFO] [stdout]    --> src/system/signal_handler.rs:302:13
[INFO] [stdout]     |
[INFO] [stdout] 302 |         let cleanup_flag = cleanup_executed.clone();
[INFO] [stdout]     |             ^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_cleanup_flag`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `domain`
[INFO] [stdout]    --> src/system/problem_solver.rs:291:38
[INFO] [stdout]     |
[INFO] [stdout] 291 |     async fn query_dns_server(&self, domain: &str, dns_server: &str) -> Result<Vec<IpAddr>> {
[INFO] [stdout]     |                                      ^^^^^^ help: if this is intentional, prefix it with an underscore: `_domain`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]    --> src/dns/handler.rs:262:37
[INFO] [stdout]     |
[INFO] [stdout] 262 |     fn create_error_response(&self, mut request: Message, error_code: ResponseCode) -> Result<Message> {
[INFO] [stdout]     |                                     ----^^^^^^^
[INFO] [stdout]     |                                     |
[INFO] [stdout]     |                                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `ips`
[INFO] [stdout]    --> src/dns/optimized_server.rs:261:45
[INFO] [stdout]     |
[INFO] [stdout] 261 |     fn create_dns_response(query: &Message, ips: Vec<IpAddr>) -> Result<Message> {
[INFO] [stdout]     |                                             ^^^ help: if this is intentional, prefix it with an underscore: `_ips`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `enabled` on type `RoutingConfig`
[INFO] [stdout]   --> examples/config_management_demo.rs:52:40
[INFO] [stdout]    |
[INFO] [stdout] 52 |     info!("  智能分流: {}", config.routing.enabled);
[INFO] [stdout]    |                                            ^^^^^^^ unknown field
[INFO] [stdout]    |
[INFO] [stdout]    = note: available fields are: `smart_routing_enabled`, `expected_ip_check`, `custom_rules`, `geosite_db_path`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `CustomRule` has no field named `name`
[INFO] [stdout]    --> examples/config_management_demo.rs:105:9
[INFO] [stdout]     |
[INFO] [stdout] 105 |         name: "".to_string(),  // 空名称
[INFO] [stdout]     |         ^^^^ `CustomRule` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: all struct fields are already assigned
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error: cannot find macro `debug` in this scope
[INFO] [stdout]    --> examples/main_program_test.rs:260:21
[INFO] [stdout]     |
[INFO] [stdout] 260 |                     debug!("帮助信息: {}", stdout);
[INFO] [stdout]     |                     ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this macro
[INFO] [stdout]     |
[INFO] [stdout]   5 + use tracing::debug;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `validate` found for struct `CustomRule` in the current scope
[INFO] [stdout]    --> examples/config_management_demo.rs:111:24
[INFO] [stdout]     |
[INFO] [stdout] 111 |     match invalid_rule.validate() {
[INFO] [stdout]     |                        ^^^^^^^^ method not found in `CustomRule`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Result<(), anyhow::Error>` is not a future
[INFO] [stdout]    --> examples/config_management_demo.rs:132:42
[INFO] [stdout]     |
[INFO] [stdout] 132 |     match config.save_to_file(temp_path).await {
[INFO] [stdout]     |                                          ^^^^^ `Result<(), anyhow::Error>` is not a future
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Future` is not implemented for `Result<(), anyhow::Error>`
[INFO] [stdout]     = note: Result<(), anyhow::Error> must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout]     = note: required for `Result<(), anyhow::Error>` to implement `IntoFuture`
[INFO] [stdout] help: remove the `.await`
[INFO] [stdout]     |
[INFO] [stdout] 132 -     match config.save_to_file(temp_path).await {
[INFO] [stdout] 132 +     match config.save_to_file(temp_path) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `load_from_file` found for struct `SmartDnsConfig` in the current scope
[INFO] [stdout]    --> examples/config_management_demo.rs:138:27
[INFO] [stdout]     |
[INFO] [stdout] 138 |     match SmartDnsConfig::load_from_file(temp_path).await {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^ function or associated item not found in `SmartDnsConfig`
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `SmartDnsConfig` consider using one of the following associated functions:
[INFO] [stdout]       SmartDnsConfig::from_file
[INFO] [stdout]       SmartDnsConfig::default
[INFO] [stdout]    --> src/config/mod.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn default() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: there is an associated function `from_file` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 138 -     match SmartDnsConfig::load_from_file(temp_path).await {
[INFO] [stdout] 138 +     match SmartDnsConfig::from_file(temp_path).await {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `load_from_file` found for struct `SmartDnsConfig` in the current scope
[INFO] [stdout]    --> examples/config_management_demo.rs:154:50
[INFO] [stdout]     |
[INFO] [stdout] 154 |     if let Ok(existing_config) = SmartDnsConfig::load_from_file("config/smart-dns.yaml").await {
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^ function or associated item not found in `SmartDnsConfig`
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `SmartDnsConfig` consider using one of the following associated functions:
[INFO] [stdout]       SmartDnsConfig::from_file
[INFO] [stdout]       SmartDnsConfig::default
[INFO] [stdout]    --> src/config/mod.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn default() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: there is an associated function `from_file` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 154 -     if let Ok(existing_config) = SmartDnsConfig::load_from_file("config/smart-dns.yaml").await {
[INFO] [stdout] 154 +     if let Ok(existing_config) = SmartDnsConfig::from_file("config/smart-dns.yaml").await {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `smart_dns_server::classifier::ClassificationResult`
[INFO] [stdout]  --> examples/cache_demo.rs:2:36
[INFO] [stdout]   |
[INFO] [stdout] 2 | use smart_dns_server::classifier::{ClassificationResult, DomainCategory};
[INFO] [stdout]   |                                    ^^^^^^^^^^^^^^^^^^^^ no `ClassificationResult` in `classifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/config_management_demo.rs:188:28
[INFO] [stdout]     |
[INFO] [stdout] 188 |     base_config.merge_with(override_config);
[INFO] [stdout]     |                 ---------- ^^^^^^^^^^^^^^^ expected `&SmartDnsConfig`, found `SmartDnsConfig`
[INFO] [stdout]     |                 |
[INFO] [stdout]     |                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/config/mod.rs:284:12
[INFO] [stdout]     |
[INFO] [stdout] 284 |     pub fn merge_with(&mut self, other: &SmartDnsConfig) {
[INFO] [stdout]     |            ^^^^^^^^^^
[INFO] [stdout] help: consider borrowing here
[INFO] [stdout]     |
[INFO] [stdout] 188 |     base_config.merge_with(&override_config);
[INFO] [stdout]     |                            +
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `message`
[INFO] [stdout]   --> examples/test-dns-parsing.rs:48:20
[INFO] [stdout]    |
[INFO] [stdout] 48 |                 Ok(message) => {
[INFO] [stdout]    |                    ^^^^^^^ help: if this is intentional, prefix it with an underscore: `_message`
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved import `smart_dns_server::validator::ValidationConfig`
[INFO] [stdout]  --> examples/expected_ip_validator_demo.rs:7:56
[INFO] [stdout]   |
[INFO] [stdout] 7 | use smart_dns_server::validator::{ExpectedIpValidator, ValidationConfig};
[INFO] [stdout]   |                                                        ^^^^^^^^^^^^^^^^ no `ValidationConfig` in `validator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `warn`
[INFO] [stdout]  --> examples/domain_classifier_demo.rs:7:21
[INFO] [stdout]   |
[INFO] [stdout] 7 | use tracing::{info, warn};
[INFO] [stdout]   |                     ^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `load_from_env` found for struct `SmartDnsConfig` in the current scope
[INFO] [stdout]    --> examples/config_management_demo.rs:232:12
[INFO] [stdout]     |
[INFO] [stdout] 232 |     config.load_from_env();
[INFO] [stdout]     |            ^^^^^^^^^^^^^ method not found in `SmartDnsConfig`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unnecessary `unsafe` block
[INFO] [stdout]   --> src/cache/lru_cache.rs:66:9
[INFO] [stdout]    |
[INFO] [stdout] 66 |         unsafe {
[INFO] [stdout]    |         ^^^^^^ unnecessary `unsafe` block
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(unused_unsafe)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `generate_template` found for struct `SmartDnsConfig` in the current scope
[INFO] [stdout]    --> examples/config_management_demo.rs:263:36
[INFO] [stdout]     |
[INFO] [stdout] 263 |     let template = SmartDnsConfig::generate_template();
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^ function or associated item not found in `SmartDnsConfig`
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `SmartDnsConfig` consider using one of the following associated functions:
[INFO] [stdout]       SmartDnsConfig::from_file
[INFO] [stdout]       SmartDnsConfig::default
[INFO] [stdout]    --> src/config/mod.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn default() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `libc` in this scope
[INFO] [stdout]    --> examples/main_program_test.rs:188:21
[INFO] [stdout]     |
[INFO] [stdout] 188 |                     libc::kill(child.id() as i32, libc::SIGTERM);
[INFO] [stdout]     |                     ^^^^ use of unresolved module or unlinked crate `libc`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `libc`, use `cargo add libc` to add it to your `Cargo.toml`
[INFO] [stdout] help: consider importing this crate
[INFO] [stdout]     |
[INFO] [stdout]   5 + use nix::libc;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find module or crate `libc` in this scope
[INFO] [stdout]    --> examples/main_program_test.rs:188:51
[INFO] [stdout]     |
[INFO] [stdout] 188 |                     libc::kill(child.id() as i32, libc::SIGTERM);
[INFO] [stdout]     |                                                   ^^^^ use of unresolved module or unlinked crate `libc`
[INFO] [stdout]     |
[INFO] [stdout]     = help: if you wanted to use a crate named `libc`, use `cargo add libc` to add it to your `Cargo.toml`
[INFO] [stdout] help: consider importing this crate
[INFO] [stdout]     |
[INFO] [stdout]   5 + use nix::libc;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `std::process`
[INFO] [stdout]    --> examples/main_program_test.rs:186:21
[INFO] [stdout]     |
[INFO] [stdout] 186 |                 use std::process;
[INFO] [stdout]     |                     ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `CountryCode` in `validator`
[INFO] [stdout]    --> examples/expected_ip_validator_demo.rs:157:105
[INFO] [stdout]     |
[INFO] [stdout] 157 | ...ap_or(&smart_dns_server::validator::CountryCode::Other("UNKNOWN".to_string())),
[INFO] [stdout]     |                                        ^^^^^^^^^^^ could not find `CountryCode` in `validator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Ipv4Addr`
[INFO] [stdout]  --> examples/expected_ip_validator_demo.rs:8:24
[INFO] [stdout]   |
[INFO] [stdout] 8 | use std::net::{IpAddr, Ipv4Addr};
[INFO] [stdout]   |                        ^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be applied to values that implement `Try`
[INFO] [stdout]   --> examples/expected_ip_validator_demo.rs:22:25
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let mut validator = ExpectedIpValidator::new()?;
[INFO] [stdout]    |                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `ExpectedIpValidator`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the nightly-only, unstable trait `Try` is not implemented for `ExpectedIpValidator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `contains_key` found for struct `LruCache<K, V>` in the current scope
[INFO] [stdout]   --> examples/cache_demo.rs:54:35
[INFO] [stdout]    |
[INFO] [stdout] 54 |     info!("user3是否还存在: {}", cache.contains_key(&"user3".to_string()));
[INFO] [stdout]    |                                        ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `contains` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 54 -     info!("user3是否还存在: {}", cache.contains_key(&"user3".to_string()));
[INFO] [stdout] 54 +     info!("user3是否还存在: {}", cache.contains(&"user3".to_string()));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `HealthStatus` in `stats`
[INFO] [stdout]    --> examples/integration_test_demo.rs:273:38
[INFO] [stdout]     |
[INFO] [stdout] 273 |             smart_dns_server::stats::HealthStatus::Healthy => "✅",
[INFO] [stdout]     |                                      ^^^^^^^^^^^^ could not find `HealthStatus` in `stats`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   5 + use smart_dns_server::stats::monitor::HealthStatus;
[INFO] [stdout]     |
[INFO] [stdout] help: if you import `HealthStatus`, refer to it directly
[INFO] [stdout]     |
[INFO] [stdout] 273 -             smart_dns_server::stats::HealthStatus::Healthy => "✅",
[INFO] [stdout] 273 +             HealthStatus::Healthy => "✅",
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `HealthStatus` in `stats`
[INFO] [stdout]    --> examples/integration_test_demo.rs:274:38
[INFO] [stdout]     |
[INFO] [stdout] 274 |             smart_dns_server::stats::HealthStatus::Warning => "⚠️",
[INFO] [stdout]     |                                      ^^^^^^^^^^^^ could not find `HealthStatus` in `stats`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   5 + use smart_dns_server::stats::monitor::HealthStatus;
[INFO] [stdout]     |
[INFO] [stdout] help: if you import `HealthStatus`, refer to it directly
[INFO] [stdout]     |
[INFO] [stdout] 274 -             smart_dns_server::stats::HealthStatus::Warning => "⚠️",
[INFO] [stdout] 274 +             HealthStatus::Warning => "⚠️",
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `HealthStatus` in `stats`
[INFO] [stdout]    --> examples/integration_test_demo.rs:275:38
[INFO] [stdout]     |
[INFO] [stdout] 275 |             smart_dns_server::stats::HealthStatus::Critical => "🚨",
[INFO] [stdout]     |                                      ^^^^^^^^^^^^ could not find `HealthStatus` in `stats`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   5 + use smart_dns_server::stats::monitor::HealthStatus;
[INFO] [stdout]     |
[INFO] [stdout] help: if you import `HealthStatus`, refer to it directly
[INFO] [stdout]     |
[INFO] [stdout] 275 -             smart_dns_server::stats::HealthStatus::Critical => "🚨",
[INFO] [stdout] 275 +             HealthStatus::Critical => "🚨",
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0433]: cannot find `HealthStatus` in `stats`
[INFO] [stdout]    --> examples/integration_test_demo.rs:276:38
[INFO] [stdout]     |
[INFO] [stdout] 276 |             smart_dns_server::stats::HealthStatus::Unknown => "❓",
[INFO] [stdout]     |                                      ^^^^^^^^^^^^ could not find `HealthStatus` in `stats`
[INFO] [stdout]     |
[INFO] [stdout] help: consider importing this enum
[INFO] [stdout]     |
[INFO] [stdout]   5 + use smart_dns_server::stats::monitor::HealthStatus;
[INFO] [stdout]     |
[INFO] [stdout] help: if you import `HealthStatus`, refer to it directly
[INFO] [stdout]     |
[INFO] [stdout] 276 -             smart_dns_server::stats::HealthStatus::Unknown => "❓",
[INFO] [stdout] 276 +             HealthStatus::Unknown => "❓",
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `sleep`
[INFO] [stdout]  --> examples/integration_test_demo.rs:8:19
[INFO] [stdout]   |
[INFO] [stdout] 8 | use tokio::time::{sleep, timeout};
[INFO] [stdout]   |                   ^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `debug`
[INFO] [stdout]  --> examples/integration_test_demo.rs:9:34
[INFO] [stdout]   |
[INFO] [stdout] 9 | use tracing::{info, warn, error, debug};
[INFO] [stdout]   |                                  ^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `Context`
[INFO] [stdout]   --> examples/integration_test_demo.rs:11:22
[INFO] [stdout]    |
[INFO] [stdout] 11 | use anyhow::{Result, Context};
[INFO] [stdout]    |                      ^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused imports: `IptablesManager` and `LinuxDnsManager`
[INFO] [stdout]   --> examples/integration_test_demo.rs:14:45
[INFO] [stdout]    |
[INFO] [stdout] 14 | use smart_dns_server::system::{PortManager, IptablesManager, LinuxDnsManager};
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^^  ^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be applied to values that implement `Try`
[INFO] [stdout]   --> examples/signal_handler_demo.rs:22:43
[INFO] [stdout]    |
[INFO] [stdout] 22 |     let dns_manager = Arc::new(Mutex::new(LinuxDnsManager::new()?));
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `LinuxDnsManager`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the nightly-only, unstable trait `Try` is not implemented for `LinuxDnsManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_status` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:21:44
[INFO] [stdout]    |
[INFO] [stdout] 21 |     info!("📊 初始状态: {:?}", iptables_manager.get_status());
[INFO] [stdout]    |                                                 ^^^^^^^^^^ method not found in `IptablesManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Default` found for enum `DomainCategory` in the current scope
[INFO] [stdout]   --> examples/expected_ip_validator_demo.rs:50:56
[INFO] [stdout]    |
[INFO] [stdout] 50 |         ("example.com", "192.168.1.1", DomainCategory::Default, "未知域名 -> 私有IP"),
[INFO] [stdout]    |                                                        ^^^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Default` found for enum `DomainCategory` in the current scope
[INFO] [stdout]   --> examples/expected_ip_validator_demo.rs:51:52
[INFO] [stdout]    |
[INFO] [stdout] 51 |         ("test.local", "10.0.0.1", DomainCategory::Default, "本地域名 -> 私有IP"),
[INFO] [stdout]    |                                                    ^^^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `stats` found for struct `LruCache<K, V>` in the current scope
[INFO] [stdout]   --> examples/cache_demo.rs:57:23
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let stats = cache.stats();
[INFO] [stdout]    |                       ^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_stats` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 57 |     let stats = cache.get_stats();
[INFO] [stdout]    |                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `disabled` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/signal_handler_demo.rs:23:65
[INFO] [stdout]    |
[INFO] [stdout] 23 |     let iptables_manager = Arc::new(Mutex::new(IptablesManager::disabled()));
[INFO] [stdout]    |                                                                 ^^^^^^^^ function or associated item not found in `IptablesManager`
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `IptablesManager`, consider using `IptablesManager::new` which returns `IptablesManager`
[INFO] [stdout]   --> src/system/iptables.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `setup_redirect` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:25:28
[INFO] [stdout]    |
[INFO] [stdout] 25 |     match iptables_manager.setup_redirect(53).await {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^ method not found in `IptablesManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `put` found for struct `TtlCache<K, V>` in the current scope
[INFO] [stdout]   --> examples/cache_demo.rs:68:11
[INFO] [stdout]    |
[INFO] [stdout] 68 |     cache.put("session1".to_string(), "active".to_string());
[INFO] [stdout]    |           ^^^ method not found in `TtlCache<String, String>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `classify` found for struct `DomainClassifier` in the current scope
[INFO] [stdout]   --> examples/domain_classifier_demo.rs:61:33
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let result = classifier.classify(domain)?;
[INFO] [stdout]    |                                 ^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `classify_domain` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 61 |         let result = classifier.classify_domain(domain)?;
[INFO] [stdout]    |                                         +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `setup_redirect` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:36:28
[INFO] [stdout]    |
[INFO] [stdout] 36 |     match iptables_manager.setup_redirect(8053).await {
[INFO] [stdout]    |                            ^^^^^^^^^^^^^^ method not found in `IptablesManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `with_dns_manager` found for struct `SignalHandler` in the current scope
[INFO] [stdout]   --> examples/signal_handler_demo.rs:27:10
[INFO] [stdout]    |
[INFO] [stdout] 26 |       let signal_handler = SignalHandler::new()
[INFO] [stdout]    |  __________________________-
[INFO] [stdout] 27 | |         .with_dns_manager(Arc::clone(&dns_manager))
[INFO] [stdout]    | |         -^^^^^^^^^^^^^^^^ method not found in `SignalHandler`
[INFO] [stdout]    | |_________|
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `put_with_ttl` found for struct `TtlCache<K, V>` in the current scope
[INFO] [stdout]   --> examples/cache_demo.rs:69:11
[INFO] [stdout]    |
[INFO] [stdout] 69 |     cache.put_with_ttl("session2".to_string(), "temp".to_string(), Duration::from_millis(500));
[INFO] [stdout]    |           ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `insert_with_ttl` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 69 -     cache.put_with_ttl("session2".to_string(), "temp".to_string(), Duration::from_millis(500));
[INFO] [stdout] 69 +     cache.insert_with_ttl("session2".to_string(), "temp".to_string(), Duration::from_millis(500));
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Block` found for enum `DomainCategory` in the current scope
[INFO] [stdout]   --> examples/domain_classifier_demo.rs:72:29
[INFO] [stdout]    |
[INFO] [stdout] 72 |             DomainCategory::Block => "🚫 阻断",
[INFO] [stdout]    |                             ^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `with_config` found for struct `ExpectedIpValidator` in the current scope
[INFO] [stdout]    --> examples/expected_ip_validator_demo.rs:134:53
[INFO] [stdout]     |
[INFO] [stdout] 134 |     let mut custom_validator = ExpectedIpValidator::with_config(custom_config)?;
[INFO] [stdout]     |                                                     ^^^^^^^^^^^ function or associated item not found in `ExpectedIpValidator`
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `ExpectedIpValidator`, consider using `ExpectedIpValidator::new` which returns `ExpectedIpValidator`
[INFO] [stdout]    --> src/validator/expected_ip.rs:66:5
[INFO] [stdout]     |
[INFO] [stdout]  66 |     pub fn new() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: variable does not need to be mutable
[INFO] [stdout]   --> src/cache/safe_cache.rs:88:21
[INFO] [stdout]    |
[INFO] [stdout] 88 |         if let Some(mut record) = cache.get_mut(domain) {
[INFO] [stdout]    |                     ----^^^^^^
[INFO] [stdout]    |                     |
[INFO] [stdout]    |                     help: remove this `mut`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `needs_iptables_redirect` found for struct `PortManager` in the current scope
[INFO] [stdout]   --> examples/integrated_system_demo.rs:27:39
[INFO] [stdout]    |
[INFO] [stdout] 27 |     let needs_redirect = port_manager.needs_iptables_redirect();
[INFO] [stdout]    |                                       ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `needs_redirect` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 27 -     let needs_redirect = port_manager.needs_iptables_redirect();
[INFO] [stdout] 27 +     let needs_redirect = port_manager.needs_redirect();
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Default` found for enum `DomainCategory` in the current scope
[INFO] [stdout]   --> examples/domain_classifier_demo.rs:73:29
[INFO] [stdout]    |
[INFO] [stdout] 73 |             DomainCategory::Default => {
[INFO] [stdout]    |                             ^^^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Default` found for enum `DomainCategory` in the current scope
[INFO] [stdout]    --> examples/expected_ip_validator_demo.rs:138:89
[INFO] [stdout]     |
[INFO] [stdout] 138 |     let result = custom_validator.validate("unknown.local", unknown_ip, DomainCategory::Default)?;
[INFO] [stdout]     |                                                                                         ^^^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/simple_optimized_main.rs:26:5
[INFO] [stdout]    |
[INFO] [stdout] 22 | struct AppState {
[INFO] [stdout]    |        -------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 26 |     config: SmartDnsConfig,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_status` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:39:52
[INFO] [stdout]    |
[INFO] [stdout] 39 |             info!("📊 当前状态: {:?}", iptables_manager.get_status());
[INFO] [stdout]    |                                                         ^^^^^^^^^^ method not found in `IptablesManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Result<ExitStatus, futures_io::Error>` is not a future
[INFO] [stdout]    --> examples/main_program_test.rs:197:52
[INFO] [stdout]     |
[INFO] [stdout] 197 |             match timeout(Duration::from_secs(10), child.wait()).await {
[INFO] [stdout]     |                   -------                          ^^^^^^^^^^^^ `Result<ExitStatus, futures_io::Error>` is not a future
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   required by a bound introduced by this call
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Future` is not implemented for `Result<ExitStatus, futures_io::Error>`
[INFO] [stdout]     = note: Result<ExitStatus, futures_io::Error> must be a future or must implement `IntoFuture` to be awaited
[INFO] [stdout]     = note: required for `Result<ExitStatus, futures_io::Error>` to implement `IntoFuture`
[INFO] [stdout] note: required by a bound in `timeout`
[INFO] [stdout]    --> /opt/rustwide/cargo-home/registry/src/index.crates.io-1949cf8c6b5b557f/tokio-1.47.1/src/time/timeout.rs:88:8
[INFO] [stdout]     |
[INFO] [stdout]  86 | pub fn timeout<F>(duration: Duration, future: F) -> Timeout<F::IntoFuture>
[INFO] [stdout]     |        ------- required by a bound in this function
[INFO] [stdout]  87 | where
[INFO] [stdout]  88 |     F: IntoFuture,
[INFO] [stdout]     |        ^^^^^^^^^^ required by this bound in `timeout`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Result<ExitStatus, futures_io::Error>` is not a future
[INFO] [stdout]    --> examples/main_program_test.rs:197:66
[INFO] [stdout]     |
[INFO] [stdout] 197 |             match timeout(Duration::from_secs(10), child.wait()).await {
[INFO] [stdout]     |                   ---------------------------------------------- ^^^^^ `Result<ExitStatus, futures_io::Error>` is not a future
[INFO] [stdout]     |                   |
[INFO] [stdout]     |                   this call returns `Result<ExitStatus, futures_io::Error>`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Future` is not implemented for `Result<ExitStatus, futures_io::Error>`
[INFO] [stdout]     = note: required for `tokio::time::Timeout<Result<ExitStatus, futures_io::Error>>` to implement `Future`
[INFO] [stdout]     = note: required for `tokio::time::Timeout<Result<ExitStatus, futures_io::Error>>` to implement `IntoFuture`
[INFO] [stdout] help: remove the `.await`
[INFO] [stdout]     |
[INFO] [stdout] 197 -             match timeout(Duration::from_secs(10), child.wait()).await {
[INFO] [stdout] 197 +             match timeout(Duration::from_secs(10), child.wait()) {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0308, E0560, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0432]: unresolved imports `smart_dns_server::stats::HealthStatus`, `smart_dns_server::stats::AlertLevel`
[INFO] [stdout]   --> examples/stats_and_monitoring_demo.rs:13:49
[INFO] [stdout]    |
[INFO] [stdout] 13 |     StatsManager, SystemMonitor, MonitorConfig, HealthStatus, AlertLevel
[INFO] [stdout]    |                                                 ^^^^^^^^^^^^  ^^^^^^^^^^ no `AlertLevel` in `stats`
[INFO] [stdout]    |                                                 |
[INFO] [stdout]    |                                                 no `HealthStatus` in `stats`
[INFO] [stdout]    |
[INFO] [stdout]    = help: consider importing this enum instead:
[INFO] [stdout]            smart_dns_server::stats::monitor::HealthStatus
[INFO] [stdout]    = help: consider importing this enum instead:
[INFO] [stdout]            rustls::internal::msgs::enums::AlertLevel
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `stats` found for struct `TtlCache<K, V>` in the current scope
[INFO] [stdout]   --> examples/cache_demo.rs:89:23
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let stats = cache.stats();
[INFO] [stdout]    |                       ^^^^^ private field, not a method
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `get_stats` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 89 |     let stats = cache.get_stats();
[INFO] [stdout]    |                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: `Result<ExitStatus, futures_io::Error>` is not a future
[INFO] [stdout]    --> examples/main_program_test.rs:197:19
[INFO] [stdout]     |
[INFO] [stdout] 197 |             match timeout(Duration::from_secs(10), child.wait()).await {
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `Result<ExitStatus, futures_io::Error>` is not a future
[INFO] [stdout]     |
[INFO] [stdout]     = help: the trait `Future` is not implemented for `Result<ExitStatus, futures_io::Error>`
[INFO] [stdout]     = note: required for `Result<ExitStatus, futures_io::Error>` to implement `IntoFuture`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `verify_rules` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:42:36
[INFO] [stdout]    |
[INFO] [stdout] 42 |             match iptables_manager.verify_rules().await {
[INFO] [stdout]    |                                    ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout] help: there is a method `list_rules` with a similar name
[INFO] [stdout]    |
[INFO] [stdout] 42 -             match iptables_manager.verify_rules().await {
[INFO] [stdout] 42 +             match iptables_manager.list_rules().await {
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused import: `SystemTime`
[INFO] [stdout]  --> examples/stats_and_monitoring_demo.rs:6:27
[INFO] [stdout]   |
[INFO] [stdout] 6 | use std::time::{Duration, SystemTime};
[INFO] [stdout]   |                           ^^^^^^^^^^
[INFO] [stdout]   |
[INFO] [stdout]   = note: `#[warn(unused_imports)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 0 arguments were supplied
[INFO] [stdout]   --> examples/cache_demo.rs:97:17
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let cache = DnsCache::new();
[INFO] [stdout]    |                 ^^^^^^^^^^^^^-- argument #1 of type `usize` is missing
[INFO] [stdout]    |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]   --> src/cache/lru_cache.rs:56:12
[INFO] [stdout]    |
[INFO] [stdout] 56 |     pub fn new(capacity: usize) -> Self {
[INFO] [stdout]    |            ^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]    |
[INFO] [stdout] 97 |     let cache = DnsCache::new(/* usize */);
[INFO] [stdout]    |                               +++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `load_from_file` found for struct `SmartDnsConfig` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:69:31
[INFO] [stdout]     |
[INFO] [stdout]  69 |         match SmartDnsConfig::load_from_file("config/smart-dns.yaml").await {
[INFO] [stdout]     |                               ^^^^^^^^^^^^^^ function or associated item not found in `SmartDnsConfig`
[INFO] [stdout]     |
[INFO] [stdout] note: if you're trying to build a new `SmartDnsConfig` consider using one of the following associated functions:
[INFO] [stdout]       SmartDnsConfig::from_file
[INFO] [stdout]       SmartDnsConfig::default
[INFO] [stdout]    --> src/config/mod.rs:146:5
[INFO] [stdout]     |
[INFO] [stdout] 146 |     pub fn from_file<P: AsRef<Path>>(path: P) -> Result<Self> {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 223 |     pub fn default() -> Self {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: there is an associated function `from_file` with a similar name
[INFO] [stdout]     |
[INFO] [stdout]  69 -         match SmartDnsConfig::load_from_file("config/smart-dns.yaml").await {
[INFO] [stdout]  69 +         match SmartDnsConfig::from_file("config/smart-dns.yaml").await {
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `cleanup_redirect` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:50:36
[INFO] [stdout]    |
[INFO] [stdout] 50 |             match iptables_manager.cleanup_redirect().await {
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^^^ method not found in `IptablesManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_status` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:53:61
[INFO] [stdout]    |
[INFO] [stdout] 53 |                     info!("📊 清理后状态: {:?}", iptables_manager.get_status());
[INFO] [stdout]    |                                                                   ^^^^^^^^^^ method not found in `IptablesManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no function or associated item named `disabled` found for struct `IptablesManager` in the current scope
[INFO] [stdout]   --> examples/iptables_demo.rs:68:49
[INFO] [stdout]    |
[INFO] [stdout] 68 |     let mut disabled_manager = IptablesManager::disabled();
[INFO] [stdout]    |                                                 ^^^^^^^^ function or associated item not found in `IptablesManager`
[INFO] [stdout]    |
[INFO] [stdout] note: if you're trying to build a new `IptablesManager`, consider using `IptablesManager::new` which returns `IptablesManager`
[INFO] [stdout]   --> src/system/iptables.rs:59:5
[INFO] [stdout]    |
[INFO] [stdout] 59 |     pub fn new() -> Self {
[INFO] [stdout]    |     ^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "config_management_demo") due to 9 previous errors
[INFO] [stderr] warning: build failed, waiting for other jobs to finish...
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "iptables_demo") due to 8 previous errors
[INFO] [stdout] error[E0599]: no method named `setup_redirect` found for struct `tokio::sync::MutexGuard<'_, IptablesManager>` in the current scope
[INFO] [stdout]   --> examples/integrated_system_demo.rs:37:45
[INFO] [stdout]    |
[INFO] [stdout] 37 |         match iptables_manager.lock().await.setup_redirect(selected_port).await {
[INFO] [stdout]    |                                             ^^^^^^^^^^^^^^ method not found in `tokio::sync::MutexGuard<'_, IptablesManager>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0433.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `classify_batch` found for struct `DomainClassifier` in the current scope
[INFO] [stdout]   --> examples/domain_classifier_demo.rs:96:36
[INFO] [stdout]    |
[INFO] [stdout] 96 |     let batch_results = classifier.classify_batch(&batch_domains)?;
[INFO] [stdout]    |                                    ^^^^^^^^^^^^^^ method not found in `DomainClassifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be applied to values that implement `Try`
[INFO] [stdout]   --> examples/integrated_system_demo.rs:50:43
[INFO] [stdout]    |
[INFO] [stdout] 50 |     let dns_manager = Arc::new(Mutex::new(LinuxDnsManager::new()?));
[INFO] [stdout]    |                                           ^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `LinuxDnsManager`
[INFO] [stdout]    |
[INFO] [stdout]    = help: the nightly-only, unstable trait `Try` is not implemented for `LinuxDnsManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "main_program_test") due to 6 previous errors; 1 warning emitted
[INFO] [stdout] error[E0061]: this method takes 2 arguments but 3 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:100:11
[INFO] [stdout]     |
[INFO] [stdout] 100 |     cache.put("baidu.com".to_string(), "A".to_string(), "39.156.66.10".to_string());
[INFO] [stdout]     |           ^^^                          ---------------  -------------------------- unexpected argument #3 of type `String`
[INFO] [stdout]     |                                        |
[INFO] [stdout]     |                                        expected `Message`, found `String`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  96 |     pub fn put(&mut self, key: K, value: V) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 100 -     cache.put("baidu.com".to_string(), "A".to_string(), "39.156.66.10".to_string());
[INFO] [stdout] 100 +     cache.put("baidu.com".to_string(), /* trust_dns_client::op::Message */);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 2 arguments but 3 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:101:11
[INFO] [stdout]     |
[INFO] [stdout] 101 |     cache.put("google.com".to_string(), "A".to_string(), "8.8.8.8".to_string());
[INFO] [stdout]     |           ^^^                           ---------------  --------------------- unexpected argument #3 of type `String`
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         expected `Message`, found `String`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  96 |     pub fn put(&mut self, key: K, value: V) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 101 -     cache.put("google.com".to_string(), "A".to_string(), "8.8.8.8".to_string());
[INFO] [stdout] 101 +     cache.put("google.com".to_string(), /* trust_dns_client::op::Message */);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 2 arguments but 3 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:102:11
[INFO] [stdout]     |
[INFO] [stdout] 102 |     cache.put("github.com".to_string(), "AAAA".to_string(), "2606:50c0:8000::153".to_string());
[INFO] [stdout]     |           ^^^                           ------------------  --------------------------------- unexpected argument #3 of type `String`
[INFO] [stdout]     |                                         |
[INFO] [stdout]     |                                         expected `Message`, found `String`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:96:12
[INFO] [stdout]     |
[INFO] [stdout]  96 |     pub fn put(&mut self, key: K, value: V) {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 102 -     cache.put("github.com".to_string(), "AAAA".to_string(), "2606:50c0:8000::153".to_string());
[INFO] [stdout] 102 +     cache.put("github.com".to_string(), /* trust_dns_client::op::Message */);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:107:42
[INFO] [stdout]     |
[INFO] [stdout] 107 |     info!("查询baidu.com A记录: {:?}", cache.get("baidu.com", "A"));
[INFO] [stdout]     |                                              ^^^ -----------  --- unexpected argument #2 of type `&'static str`
[INFO] [stdout]     |                                                  |
[INFO] [stdout]     |                                                  expected `&String`, found `&str`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  82 |     pub fn get(&mut self, key: &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 107 -     info!("查询baidu.com A记录: {:?}", cache.get("baidu.com", "A"));
[INFO] [stdout] 107 +     info!("查询baidu.com A记录: {:?}", cache.get(/* &String */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `load_from_env` found for struct `SmartDnsConfig` in the current scope
[INFO] [stdout]   --> examples/integration_test_demo.rs:88:12
[INFO] [stdout]    |
[INFO] [stdout] 88 |     config.load_from_env();
[INFO] [stdout]    |            ^^^^^^^^^^^^^ method not found in `SmartDnsConfig`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_cache_stats` found for struct `DomainClassifier` in the current scope
[INFO] [stdout]    --> examples/domain_classifier_demo.rs:101:34
[INFO] [stdout]     |
[INFO] [stdout] 101 |     let cache_stats = classifier.get_cache_stats();
[INFO] [stdout]     |                                  ^^^^^^^^^^^^^^^ method not found in `DomainClassifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 0 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:103:28
[INFO] [stdout]     |
[INFO] [stdout] 103 |     let mut port_manager = PortManager::new(vec![8053, 9053, 10053]);
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^ ----------------------- unexpected argument of type `Vec<{integer}>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/system/port_manager.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 103 -     let mut port_manager = PortManager::new(vec![8053, 9053, 10053]);
[INFO] [stdout] 103 +     let mut port_manager = PortManager::new();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `category` on type `DomainCategory`
[INFO] [stdout]    --> examples/integration_test_demo.rs:118:84
[INFO] [stdout]     |
[INFO] [stdout] 118 |                 Ok(result) => info!("✅ 域名分类器工作正常: {} -> {:?}", "baidu.com", result.category),
[INFO] [stdout]     |                                                                                              ^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:108:43
[INFO] [stdout]     |
[INFO] [stdout] 108 |     info!("查询google.com A记录: {:?}", cache.get("google.com", "A"));
[INFO] [stdout]     |                                               ^^^ ------------  --- unexpected argument #2 of type `&'static str`
[INFO] [stdout]     |                                                   |
[INFO] [stdout]     |                                                   expected `&String`, found `&str`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  82 |     pub fn get(&mut self, key: &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 108 -     info!("查询google.com A记录: {:?}", cache.get("google.com", "A"));
[INFO] [stdout] 108 +     info!("查询google.com A记录: {:?}", cache.get(/* &String */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `with_dns_manager` found for struct `SignalHandler` in the current scope
[INFO] [stdout]   --> examples/integrated_system_demo.rs:60:10
[INFO] [stdout]    |
[INFO] [stdout] 59 |       let signal_handler = SignalHandler::new()
[INFO] [stdout]    |  __________________________-
[INFO] [stdout] 60 | |         .with_dns_manager(Arc::clone(&dns_manager))
[INFO] [stdout]    | |         -^^^^^^^^^^^^^^^^ method not found in `SignalHandler`
[INFO] [stdout]    | |_________|
[INFO] [stdout]    |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:61:23
[INFO] [stdout]     |
[INFO] [stdout]  61 |         stats_manager.record_dns_query(success, response_time, query_type);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Block` found for enum `DomainCategory` in the current scope
[INFO] [stdout]   --> examples/stats_and_monitoring_demo.rs:70:34
[INFO] [stdout]    |
[INFO] [stdout] 70 |             2 => DomainCategory::Block,
[INFO] [stdout]    |                                  ^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Default` found for enum `DomainCategory` in the current scope
[INFO] [stdout]   --> examples/stats_and_monitoring_demo.rs:71:34
[INFO] [stdout]    |
[INFO] [stdout] 71 |             _ => DomainCategory::Default,
[INFO] [stdout]    |                                  ^^^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_direct_domain` found for struct `DomainClassifier` in the current scope
[INFO] [stdout]    --> examples/domain_classifier_demo.rs:116:36
[INFO] [stdout]     |
[INFO] [stdout] 116 |         let is_direct = classifier.is_direct_domain(domain)?;
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^ method not found in `DomainClassifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:109:46
[INFO] [stdout]     |
[INFO] [stdout] 109 |     info!("查询github.com AAAA记录: {:?}", cache.get("github.com", "AAAA"));
[INFO] [stdout]     |                                                  ^^^ ------------  ------ unexpected argument #2 of type `&'static str`
[INFO] [stdout]     |                                                      |
[INFO] [stdout]     |                                                      expected `&String`, found `&str`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  82 |     pub fn get(&mut self, key: &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 109 -     info!("查询github.com AAAA记录: {:?}", cache.get("github.com", "AAAA"));
[INFO] [stdout] 109 +     info!("查询github.com AAAA记录: {:?}", cache.get(/* &String */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_routing_decision` found for struct `StatsManager` in the current scope
[INFO] [stdout]   --> examples/stats_and_monitoring_demo.rs:76:23
[INFO] [stdout]    |
[INFO] [stdout] 76 |         stats_manager.record_routing_decision(&category, &rule_name, confidence);
[INFO] [stdout]    |                       ^^^^^^^^^^^^^^^^^^^^^^^ method not found in `StatsManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "signal_handler_demo") due to 3 previous errors
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 4 arguments were supplied
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:91:27
[INFO] [stdout]     |
[INFO] [stdout]  91 |             stats_manager.record_upstream_query(name, addr, success, response_time);
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^^^ ---- unexpected argument #1 of type `&&str`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/stats/metrics.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 248 |     pub fn record_upstream_query(&mut self, is_direct: bool, server: &str, response_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout]  91 -             stats_manager.record_upstream_query(name, addr, success, response_time);
[INFO] [stdout]  91 +             stats_manager.record_upstream_query(addr, success, response_time);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `show_configuration_recommendations` is never used
[INFO] [stdout]    --> examples/network_demo.rs:203:4
[INFO] [stdout]     |
[INFO] [stdout] 203 | fn show_configuration_recommendations() {
[INFO] [stdout]     |    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:110:35
[INFO] [stdout]     |
[INFO] [stdout] 110 |     info!("查询不存在的记录: {:?}", cache.get("notfound.com", "A"));
[INFO] [stdout]     |                                           ^^^ --------------  --- unexpected argument #2 of type `&'static str`
[INFO] [stdout]     |                                               |
[INFO] [stdout]     |                                               expected `&String`, found `&str`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:82:12
[INFO] [stdout]     |
[INFO] [stdout]  82 |     pub fn get(&mut self, key: &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 110 -     info!("查询不存在的记录: {:?}", cache.get("notfound.com", "A"));
[INFO] [stdout] 110 +     info!("查询不存在的记录: {:?}", cache.get(/* &String */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:130:28
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let upstream_manager = UpstreamDnsManager::new(
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 131 |         vec!["114.114.114.114:53".to_string()],
[INFO] [stdout] 132 |         vec!["8.8.8.8:53".to_string()],
[INFO] [stdout]     |         ------------------------------ unexpected argument #2 of type `Vec<String>`
[INFO] [stdout]     |
[INFO] [stdout] note: expected `UpstreamConfig`, found `Vec<String>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:131:9
[INFO] [stdout]     |
[INFO] [stdout] 131 |         vec!["114.114.114.114:53".to_string()],
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: expected struct `UpstreamConfig`
[INFO] [stdout]                found struct `Vec<String>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/upstream/manager.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn new(config: UpstreamConfig) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 131 -         vec!["114.114.114.114:53".to_string()],
[INFO] [stdout] 132 -         vec!["8.8.8.8:53".to_string()],
[INFO] [stdout] 131 +         /* UpstreamConfig */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/integration_test_demo.rs:139:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |     match ExpectedIpValidator::new() {
[INFO] [stdout]     |           -------------------------- this expression has type `ExpectedIpValidator`
[INFO] [stdout] 139 |         Ok(_validator) => info!("✅ IP验证器初始化成功"),
[INFO] [stdout]     |         ^^^^^^^^^^^^^^ expected `ExpectedIpValidator`, found `Result<_, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `ExpectedIpValidator`
[INFO] [stdout]                  found enum `Result<_, _>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/integration_test_demo.rs:140:9
[INFO] [stdout]     |
[INFO] [stdout] 138 |     match ExpectedIpValidator::new() {
[INFO] [stdout]     |           -------------------------- this expression has type `ExpectedIpValidator`
[INFO] [stdout] 139 |         Ok(_validator) => info!("✅ IP验证器初始化成功"),
[INFO] [stdout] 140 |         Err(e) => {
[INFO] [stdout]     |         ^^^^^^ expected `ExpectedIpValidator`, found `Result<_, _>`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected struct `ExpectedIpValidator`
[INFO] [stdout]                  found enum `Result<_, _>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:148:21
[INFO] [stdout]     |
[INFO] [stdout] 148 |     let dns_cache = DnsCache::new(1000, 300);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^       --- unexpected argument #2 of type `{integer}`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  56 |     pub fn new(capacity: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 148 -     let dns_cache = DnsCache::new(1000, 300);
[INFO] [stdout] 148 +     let dns_cache = DnsCache::new(1000);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:149:32
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let classification_cache = DomainClassificationCache::new(500);
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----- argument #2 of type `Duration` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cache/ttl.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  56 |     pub fn new(max_capacity: usize, default_ttl: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 149 |     let classification_cache = DomainClassificationCache::new(500, /* Duration */);
[INFO] [stdout]     |                                                                  ++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:166:30
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let dns_cache = Arc::new(DnsCache::new(1000, 300));
[INFO] [stdout]     |                              ^^^^^^^^^^^^^       --- unexpected argument #2 of type `{integer}`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  56 |     pub fn new(capacity: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 166 -     let dns_cache = Arc::new(DnsCache::new(1000, 300));
[INFO] [stdout] 166 +     let dns_cache = Arc::new(DnsCache::new(1000));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:167:41
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let classification_cache = Arc::new(DomainClassificationCache::new(500));
[INFO] [stdout]     |                                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^----- argument #2 of type `Duration` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cache/ttl.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  56 |     pub fn new(max_capacity: usize, default_ttl: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 167 |     let classification_cache = Arc::new(DomainClassificationCache::new(500, /* Duration */));
[INFO] [stdout]     |                                                                           ++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:113:42
[INFO] [stdout]     |
[INFO] [stdout] 113 |     info!("是否包含baidu.com A记录: {}", cache.contains("baidu.com", "A"));
[INFO] [stdout]     |                                                ^^^^^^^^ -----------  --- unexpected argument #2 of type `&'static str`
[INFO] [stdout]     |                                                         |
[INFO] [stdout]     |                                                         expected `&String`, found `&str`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn contains(&self, key: &K) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 113 -     info!("是否包含baidu.com A记录: {}", cache.contains("baidu.com", "A"));
[INFO] [stdout] 113 +     info!("是否包含baidu.com A记录: {}", cache.contains(/* &String */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `is_proxy_domain` found for struct `DomainClassifier` in the current scope
[INFO] [stdout]    --> examples/domain_classifier_demo.rs:117:35
[INFO] [stdout]     |
[INFO] [stdout] 117 |         let is_proxy = classifier.is_proxy_domain(domain)?;
[INFO] [stdout]     |                                   ^^^^^^^^^^^^^^^ method not found in `DomainClassifier`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_cache_operation` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:104:23
[INFO] [stdout]     |
[INFO] [stdout] 104 |         stats_manager.record_cache_operation(cache_type, hit);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_cache_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 233 |     pub fn record_cache_stats(&mut self, hits: u64, misses: u64, size: usize, capacity: usize) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:168:37
[INFO] [stdout]     |
[INFO] [stdout] 168 |     let upstream_manager = Arc::new(UpstreamDnsManager::new(
[INFO] [stdout]     |                                     ^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 169 |         vec!["114.114.114.114:53".to_string()],
[INFO] [stdout] 170 |         vec!["8.8.8.8:53".to_string()],
[INFO] [stdout]     |         ------------------------------ unexpected argument #2 of type `Vec<String>`
[INFO] [stdout]     |
[INFO] [stdout] note: expected `UpstreamConfig`, found `Vec<String>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:169:9
[INFO] [stdout]     |
[INFO] [stdout] 169 |         vec!["114.114.114.114:53".to_string()],
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: expected struct `UpstreamConfig`
[INFO] [stdout]                found struct `Vec<String>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/upstream/manager.rs:107:12
[INFO] [stdout]     |
[INFO] [stdout] 107 |     pub fn new(config: UpstreamConfig) -> Result<Self> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 169 -         vec!["114.114.114.114:53".to_string()],
[INFO] [stdout] 170 -         vec!["8.8.8.8:53".to_string()],
[INFO] [stdout] 169 +         /* UpstreamConfig */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0277]: the `?` operator can only be applied to values that implement `Try`
[INFO] [stdout]    --> examples/integration_test_demo.rs:172:33
[INFO] [stdout]     |
[INFO] [stdout] 172 |     let ip_validator = Arc::new(ExpectedIpValidator::new()?);
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ the `?` operator cannot be applied to type `ExpectedIpValidator`
[INFO] [stdout]     |
[INFO] [stdout]     = help: the nightly-only, unstable trait `Try` is not implemented for `ExpectedIpValidator`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0432, E0433, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 6 arguments were supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:175:23
[INFO] [stdout]     |
[INFO] [stdout] 175 |     let dns_handler = DnsRequestHandler::new(
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 176 |         domain_classifier,
[INFO] [stdout] 177 |         dns_cache,
[INFO] [stdout]     |         --------- unexpected argument #2 of type `Arc<LruCache<String, trust_dns_client::op::Message>>`
[INFO] [stdout] 178 |         classification_cache,
[INFO] [stdout]     |         -------------------- unexpected argument #3 of type `Arc<TtlCache<String, DomainCategory>>`
[INFO] [stdout] 179 |         upstream_manager,
[INFO] [stdout]     |         ---------------- unexpected argument #4 of type `Arc<Result<UpstreamDnsManager, anyhow::Error>>`
[INFO] [stdout] 180 |         ip_validator,
[INFO] [stdout]     |         ------------ unexpected argument #5 of type `Arc<_>`
[INFO] [stdout] 181 |         stats_manager.clone(),
[INFO] [stdout]     |         --------------------- unexpected argument #6 of type `Arc<tokio::sync::RwLock<StatsManager>>`
[INFO] [stdout]     |
[INFO] [stdout] note: expected `SmartDnsConfig`, found `Arc<DomainClassifier>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:176:9
[INFO] [stdout]     |
[INFO] [stdout] 176 |         domain_classifier,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^
[INFO] [stdout]     = note: expected struct `SmartDnsConfig`
[INFO] [stdout]                found struct `Arc<DomainClassifier>`
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/dns/handler.rs:41:18
[INFO] [stdout]     |
[INFO] [stdout]  41 |     pub async fn new(config: SmartDnsConfig) -> Result<Self> {
[INFO] [stdout]     |                  ^^^
[INFO] [stdout] help: remove the extra arguments
[INFO] [stdout]     |
[INFO] [stdout] 176 -         domain_classifier,
[INFO] [stdout] 177 -         dns_cache,
[INFO] [stdout] 178 -         classification_cache,
[INFO] [stdout] 179 -         upstream_manager,
[INFO] [stdout] 180 -         ip_validator,
[INFO] [stdout] 181 -         stats_manager.clone(),
[INFO] [stdout] 176 +         /* SmartDnsConfig */,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "expected_ip_validator_demo") due to 7 previous errors; 1 warning emitted
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:114:45
[INFO] [stdout]     |
[INFO] [stdout] 114 |     info!("是否包含notfound.com A记录: {}", cache.contains("notfound.com", "A"));
[INFO] [stdout]     |                                                   ^^^^^^^^ --------------  --- unexpected argument #2 of type `&'static str`
[INFO] [stdout]     |                                                            |
[INFO] [stdout]     |                                                            expected `&String`, found `&str`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:142:12
[INFO] [stdout]     |
[INFO] [stdout] 142 |     pub fn contains(&self, key: &K) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 114 -     info!("是否包含notfound.com A记录: {}", cache.contains("notfound.com", "A"));
[INFO] [stdout] 114 +     info!("是否包含notfound.com A记录: {}", cache.contains(/* &String */));
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_ip_validation` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:114:23
[INFO] [stdout]     |
[INFO] [stdout] 114 |         stats_manager.record_ip_validation(success, country, confidence, is_china);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^ method not found in `StatsManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:119:19
[INFO] [stdout]     |
[INFO] [stdout] 119 |     stats_manager.update_system_stats(
[INFO] [stdout]     |     --------------^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_query_stats` on type `StatsManager`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:127:42
[INFO] [stdout]     |
[INFO] [stdout] 127 |     info!("  DNS查询总数: {}", stats_manager.dns_query_stats.total_queries);
[INFO] [stdout]     |                                              ^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_query_stats` on type `StatsManager`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:128:43
[INFO] [stdout]     |
[INFO] [stdout] 128 |     info!("  DNS查询成功数: {}", stats_manager.dns_query_stats.successful_queries);
[INFO] [stdout]     |                                                ^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_query_stats` on type `StatsManager`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:129:46
[INFO] [stdout]     |
[INFO] [stdout] 129 |     info!("  平均响应时间: {:.2}ms", stats_manager.dns_query_stats.avg_response_time_ms);
[INFO] [stdout]     |                                                    ^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_stats` on type `StatsManager`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:130:40
[INFO] [stdout]     |
[INFO] [stdout] 130 |     info!("  直连查询数: {}", stats_manager.routing_stats.direct_queries);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/cache_demo.rs:117:25
[INFO] [stdout]     |
[INFO] [stdout] 117 |     let removed = cache.remove("google.com", "A");
[INFO] [stdout]     |                         ^^^^^^ ------------  --- unexpected argument #2 of type `&'static str`
[INFO] [stdout]     |                                |
[INFO] [stdout]     |                                expected `&String`, found `&str`
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:127:12
[INFO] [stdout]     |
[INFO] [stdout] 127 |     pub fn remove(&mut self, key: &K) -> Option<V> {
[INFO] [stdout]     |            ^^^^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 117 -     let removed = cache.remove("google.com", "A");
[INFO] [stdout] 117 +     let removed = cache.remove(/* &String */);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_stats` on type `StatsManager`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:131:40
[INFO] [stdout]     |
[INFO] [stdout] 131 |     info!("  代理查询数: {}", stats_manager.routing_stats.proxy_queries);
[INFO] [stdout]     |                                             ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `upstream_dns_stats` on type `StatsManager`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:132:44
[INFO] [stdout]     |
[INFO] [stdout] 132 |     info!("  上游DNS服务器数: {}", stats_manager.upstream_dns_stats.len());
[INFO] [stdout]     |                                                  ^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `classify_domain` found for opaque type `impl Future<Output = Result<DnsRequestHandler, anyhow::Error>>` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:197:27
[INFO] [stdout]     |
[INFO] [stdout] 197 |         match dns_handler.classify_domain(domain).await {
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^ method not found in `impl Future<Output = Result<DnsRequestHandler, anyhow::Error>>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `env_filter`
[INFO] [stdout]   --> src/utils/logging.rs:60:9
[INFO] [stdout]    |
[INFO] [stdout] 60 |     let env_filter = EnvFilter::new(level);
[INFO] [stdout]    |         ^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_env_filter`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_query_stats` on type `tokio::sync::RwLockReadGuard<'_, StatsManager>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:206:34
[INFO] [stdout]     |
[INFO] [stdout] 206 |     info!("  DNS查询总数: {}", stats.dns_query_stats.total_queries);
[INFO] [stdout]     |                                      ^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_stats` on type `tokio::sync::RwLockReadGuard<'_, StatsManager>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:208:15
[INFO] [stdout]     |
[INFO] [stdout] 208 |         stats.routing_stats.direct_queries + 
[INFO] [stdout]     |               ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_stats` on type `tokio::sync::RwLockReadGuard<'_, StatsManager>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:209:15
[INFO] [stdout]     |
[INFO] [stdout] 209 |         stats.routing_stats.proxy_queries + 
[INFO] [stdout]     |               ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_stats` on type `tokio::sync::RwLockReadGuard<'_, StatsManager>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:210:15
[INFO] [stdout]     |
[INFO] [stdout] 210 |         stats.routing_stats.blocked_queries + 
[INFO] [stdout]     |               ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_stats` on type `tokio::sync::RwLockReadGuard<'_, StatsManager>`
[INFO] [stdout]    --> examples/integration_test_demo.rs:211:15
[INFO] [stdout]     |
[INFO] [stdout] 211 |         stats.routing_stats.default_queries
[INFO] [stdout]     |               ^^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `config` found for struct `LruCache<K, V>` in the current scope
[INFO] [stdout]    --> examples/cache_demo.rs:122:24
[INFO] [stdout]     |
[INFO] [stdout] 122 |     let config = cache.config();
[INFO] [stdout]     |                        ^^^^^^ method not found in `LruCache<String, trust_dns_client::op::Message>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 2 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/cache_demo.rs:130:17
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let cache = DomainClassificationCache::new(1000);
[INFO] [stdout]     |                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^------ argument #2 of type `Duration` is missing
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cache/ttl.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  56 |     pub fn new(max_capacity: usize, default_ttl: Duration) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: provide the argument
[INFO] [stdout]     |
[INFO] [stdout] 130 |     let cache = DomainClassificationCache::new(1000, /* Duration */);
[INFO] [stdout]     |                                                    ++++++++++++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Default` found for enum `DomainCategory` in the current scope
[INFO] [stdout]    --> examples/cache_demo.rs:149:35
[INFO] [stdout]     |
[INFO] [stdout] 149 |         category: DomainCategory::Default,
[INFO] [stdout]     |                                   ^^^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `put` found for struct `TtlCache<K, V>` in the current scope
[INFO] [stdout]    --> examples/cache_demo.rs:155:11
[INFO] [stdout]     |
[INFO] [stdout] 155 |     cache.put("baidu.com".to_string(), baidu_result);
[INFO] [stdout]     |           ^^^ method not found in `TtlCache<String, DomainCategory>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:147:23
[INFO] [stdout]     |
[INFO] [stdout] 147 |         stats_manager.record_dns_query(success, response_time, "A");
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] For more information about this error, try `rustc --explain E0599`.
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0277, E0599.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0277`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "domain_classifier_demo") due to 7 previous errors; 1 warning emitted
[INFO] [stdout] error[E0599]: no method named `record_cache_operation` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:153:23
[INFO] [stdout]     |
[INFO] [stdout] 153 |         stats_manager.record_cache_operation("dns", hit);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_cache_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 233 |     pub fn record_cache_stats(&mut self, hits: u64, misses: u64, size: usize, capacity: usize) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `put` found for struct `TtlCache<K, V>` in the current scope
[INFO] [stdout]    --> examples/cache_demo.rs:156:11
[INFO] [stdout]     |
[INFO] [stdout] 156 |     cache.put("google.com".to_string(), google_result);
[INFO] [stdout]     |           ^^^ method not found in `TtlCache<String, DomainCategory>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "integrated_system_demo") due to 4 previous errors
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:157:19
[INFO] [stdout]     |
[INFO] [stdout] 157 |     stats_manager.update_system_stats(
[INFO] [stdout]     |     --------------^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_performance_metrics` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:166:33
[INFO] [stdout]     |
[INFO] [stdout] 166 |     let metrics = stats_manager.get_performance_metrics();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^ method not found in `StatsManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:231:19
[INFO] [stdout]     |
[INFO] [stdout] 231 |             stats.record_dns_query(success, response_time, "A");
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:191:23
[INFO] [stdout]     |
[INFO] [stdout] 191 |         stats_manager.record_dns_query(success, response_time, "A");
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `put` found for struct `TtlCache<K, V>` in the current scope
[INFO] [stdout]    --> examples/cache_demo.rs:157:11
[INFO] [stdout]     |
[INFO] [stdout] 157 |     cache.put("github.com".to_string(), github_result);
[INFO] [stdout]     |           ^^^ method not found in `TtlCache<String, DomainCategory>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_routing_decision` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:194:23
[INFO] [stdout]     |
[INFO] [stdout] 194 |         stats_manager.record_routing_decision(&category, "测试规则", 0.85);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^^^ method not found in `StatsManager`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `StatsManager` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:197:19
[INFO] [stdout]     |
[INFO] [stdout] 197 |     stats_manager.update_system_stats(128 * 1024 * 1024, 28.5, 12.3);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_queries` on type `StatsSummary`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:203:35
[INFO] [stdout]     |
[INFO] [stdout] 203 |     info!("  DNS查询总数: {}", report.dns_queries.total_queries);
[INFO] [stdout]     |                                       ^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_decisions` on type `StatsSummary`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:205:16
[INFO] [stdout]     |
[INFO] [stdout] 205 |         report.routing_decisions.direct_queries + report.routing_decisions.proxy_queries);
[INFO] [stdout]     |                ^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `routing_decisions` on type `StatsSummary`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:205:58
[INFO] [stdout]     |
[INFO] [stdout] 205 |         report.routing_decisions.direct_queries + report.routing_decisions.proxy_queries);
[INFO] [stdout]     |                                                          ^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_cache_operation` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:237:19
[INFO] [stdout]     |
[INFO] [stdout] 237 |             stats.record_cache_operation("dns", hit);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_cache_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 233 |     pub fn record_cache_stats(&mut self, hits: u64, misses: u64, size: usize, capacity: usize) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `to_human_readable` found for struct `StatsSummary` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:208:33
[INFO] [stdout]     |
[INFO] [stdout] 208 |     let human_readable = report.to_human_readable();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^ method not found in `StatsSummary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `to_json` found for struct `StatsSummary` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:212:18
[INFO] [stdout]     |
[INFO] [stdout] 212 |     match report.to_json() {
[INFO] [stdout]     |                  ^^^^^^^ method not found in `StatsSummary`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `monitor_interval_seconds`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:229:9
[INFO] [stdout]     |
[INFO] [stdout] 229 |         monitor_interval_seconds: 1, // 1秒间隔用于演示
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^ `MonitorConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `check_interval`, `cpu_threshold`, `memory_threshold`, `dns_success_rate_threshold`, `cache_hit_rate_threshold` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `cpu_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:230:9
[INFO] [stdout]     |
[INFO] [stdout] 230 |         cpu_alert_threshold: 70.0,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 230 -         cpu_alert_threshold: 70.0,
[INFO] [stdout] 230 +         cpu_threshold: 70.0,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `memory_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:231:9
[INFO] [stdout]     |
[INFO] [stdout] 231 |         memory_alert_threshold: 75.0,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 231 -         memory_alert_threshold: 75.0,
[INFO] [stdout] 231 +         memory_threshold: 75.0,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/cache_demo.rs:162:37
[INFO] [stdout]     |
[INFO] [stdout] 162 |     if let Some(result) = cache.get("baidu.com") {
[INFO] [stdout]     |                                 --- ^^^^^^^^^^^ expected `&String`, found `&str`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/ttl.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  91 |     pub fn get(&mut self, key: &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `response_time_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:232:9
[INFO] [stdout]     |
[INFO] [stdout] 232 |         response_time_alert_threshold: 200,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 232 -         response_time_alert_threshold: 200,
[INFO] [stdout] 232 +         response_time_threshold_ms: 200,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `success_rate_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:233:9
[INFO] [stdout]     |
[INFO] [stdout] 233 |         success_rate_alert_threshold: 90.0,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `MonitorConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `check_interval`, `cpu_threshold`, `memory_threshold`, `dns_success_rate_threshold`, `cache_hit_rate_threshold` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `category` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:164:22
[INFO] [stdout]     |
[INFO] [stdout] 164 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                      ^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `matched_rule` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:164:39
[INFO] [stdout]     |
[INFO] [stdout] 164 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                                       ^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `confidence` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:164:60
[INFO] [stdout]     |
[INFO] [stdout] 164 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                                                            ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:237:23
[INFO] [stdout]     |
[INFO] [stdout] 237 |     let mut monitor = SystemMonitor::new(stats_manager.clone(), config);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^ --------------------- unexpected argument #1 of type `Arc<tokio::sync::RwLock<StatsManager>>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/stats/monitor.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn new(config: MonitorConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 237 -     let mut monitor = SystemMonitor::new(stats_manager.clone(), config);
[INFO] [stdout] 237 +     let mut monitor = SystemMonitor::new(config);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:245:19
[INFO] [stdout]     |
[INFO] [stdout] 245 |             stats.record_dns_query(success, response_time, "A");
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/cache_demo.rs:167:37
[INFO] [stdout]     |
[INFO] [stdout] 167 |     if let Some(result) = cache.get("google.com") {
[INFO] [stdout]     |                                 --- ^^^^^^^^^^^^ expected `&String`, found `&str`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/ttl.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  91 |     pub fn get(&mut self, key: &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `category` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:169:22
[INFO] [stdout]     |
[INFO] [stdout] 169 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                      ^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `matched_rule` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:169:39
[INFO] [stdout]     |
[INFO] [stdout] 169 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                                       ^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `confidence` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:169:60
[INFO] [stdout]     |
[INFO] [stdout] 169 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                                                            ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:249:15
[INFO] [stdout]     |
[INFO] [stdout] 249 |         stats.update_system_stats(400 * 1024 * 1024, 78.5, 85.2);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `perform_health_checks` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:258:21
[INFO] [stdout]     |
[INFO] [stdout] 258 |             monitor.perform_health_checks().await;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `perform_health_check` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 258 -             monitor.perform_health_checks().await;
[INFO] [stdout] 258 +             monitor.perform_health_check().await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/cache_demo.rs:172:37
[INFO] [stdout]     |
[INFO] [stdout] 172 |     if let Some(result) = cache.get("github.com") {
[INFO] [stdout]     |                                 --- ^^^^^^^^^^^^ expected `&String`, found `&str`
[INFO] [stdout]     |                                 |
[INFO] [stdout]     |                                 arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/ttl.rs:91:12
[INFO] [stdout]     |
[INFO] [stdout]  91 |     pub fn get(&mut self, key: &K) -> Option<&V> {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `category` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:174:22
[INFO] [stdout]     |
[INFO] [stdout] 174 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                      ^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `matched_rule` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:174:39
[INFO] [stdout]     |
[INFO] [stdout] 174 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                                       ^^^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `confidence` on type `&DomainCategory`
[INFO] [stdout]    --> examples/cache_demo.rs:174:60
[INFO] [stdout]     |
[INFO] [stdout] 174 |               result.category, result.matched_rule, result.confidence);
[INFO] [stdout]     |                                                            ^^^^^^^^^^ unknown field
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:241:15
[INFO] [stdout]     |
[INFO] [stdout] 241 |         stats.update_system_stats(256 * 1024 * 1024, 45.0, 25.0);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/cache_demo.rs:178:47
[INFO] [stdout]     |
[INFO] [stdout] 178 |     info!("是否包含baidu.com: {}", cache.contains("baidu.com"));
[INFO] [stdout]     |                                          -------- ^^^^^^^^^^^ expected `&String`, found `&str`
[INFO] [stdout]     |                                          |
[INFO] [stdout]     |                                          arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/ttl.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn contains(&self, key: &K) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `check_alert_conditions` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:259:21
[INFO] [stdout]     |
[INFO] [stdout] 259 |             monitor.check_alert_conditions().await;
[INFO] [stdout]     |                     ^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0308]: mismatched types
[INFO] [stdout]    --> examples/cache_demo.rs:179:49
[INFO] [stdout]     |
[INFO] [stdout] 179 |     info!("是否包含unknown.com: {}", cache.contains("unknown.com"));
[INFO] [stdout]     |                                            -------- ^^^^^^^^^^^^^ expected `&String`, found `&str`
[INFO] [stdout]     |                                            |
[INFO] [stdout]     |                                            arguments to this method are incorrect
[INFO] [stdout]     |
[INFO] [stdout]     = note: expected reference `&String`
[INFO] [stdout]                found reference `&'static str`
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/cache/ttl.rs:126:12
[INFO] [stdout]     |
[INFO] [stdout] 126 |     pub fn contains(&self, key: &K) -> bool {
[INFO] [stdout]     |            ^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_current_health_status` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:270:33
[INFO] [stdout]     |
[INFO] [stdout] 270 |     let health_status = monitor.get_current_health_status();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_current_metrics` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 270 -     let health_status = monitor.get_current_health_status();
[INFO] [stdout] 270 +     let health_status = monitor.get_current_metrics();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `stats` found for struct `TtlCache<K, V>` in the current scope
[INFO] [stdout]    --> examples/cache_demo.rs:182:23
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let stats = cache.stats();
[INFO] [stdout]     |                       ^^^^^ private field, not a method
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_stats` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 182 |     let stats = cache.get_stats();
[INFO] [stdout]     |                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_unacknowledged_alerts` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:282:26
[INFO] [stdout]     |
[INFO] [stdout] 282 |     let alerts = monitor.get_unacknowledged_alerts();
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `cpu_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:303:9
[INFO] [stdout]     |
[INFO] [stdout] 303 |         cpu_alert_threshold: 60.0,    // 降低阈值以触发告警
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 303 -         cpu_alert_threshold: 60.0,    // 降低阈值以触发告警
[INFO] [stdout] 303 +         cpu_threshold: 60.0,    // 降低阈值以触发告警
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `memory_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:304:9
[INFO] [stdout]     |
[INFO] [stdout] 304 |         memory_alert_threshold: 70.0, // 降低阈值以触发告警
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 304 -         memory_alert_threshold: 70.0, // 降低阈值以触发告警
[INFO] [stdout] 304 +         memory_threshold: 70.0, // 降低阈值以触发告警
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `response_time_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:305:9
[INFO] [stdout]     |
[INFO] [stdout] 305 |         response_time_alert_threshold: 100, // 降低阈值以触发告警
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 305 -         response_time_alert_threshold: 100, // 降低阈值以触发告警
[INFO] [stdout] 305 +         response_time_threshold_ms: 100, // 降低阈值以触发告警
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `success_rate_alert_threshold`
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:306:9
[INFO] [stdout]     |
[INFO] [stdout] 306 |         success_rate_alert_threshold: 95.0,  // 提高阈值以触发告警
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ `MonitorConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `check_interval`, `cpu_threshold`, `memory_threshold`, `dns_success_rate_threshold`, `cache_hit_rate_threshold` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:310:23
[INFO] [stdout]     |
[INFO] [stdout] 310 |     let mut monitor = SystemMonitor::new(stats_manager.clone(), config);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^ --------------------- unexpected argument #1 of type `Arc<tokio::sync::RwLock<StatsManager>>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/stats/monitor.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn new(config: MonitorConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 310 -     let mut monitor = SystemMonitor::new(stats_manager.clone(), config);
[INFO] [stdout] 310 +     let mut monitor = SystemMonitor::new(config);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `stats` found for struct `LruCache<K, V>` in the current scope
[INFO] [stdout]    --> examples/cache_demo.rs:216:23
[INFO] [stdout]     |
[INFO] [stdout] 216 |     let stats = cache.stats();
[INFO] [stdout]     |                       ^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_stats` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 216 |     let stats = cache.get_stats();
[INFO] [stdout]     |                       ++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:319:19
[INFO] [stdout]     |
[INFO] [stdout] 319 |             stats.record_dns_query(success, response_time, "A");
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `config` is never read
[INFO] [stdout]   --> src/system/problem_solver.rs:15:5
[INFO] [stdout]    |
[INFO] [stdout] 14 | pub struct SystemProblemSolver {
[INFO] [stdout]    |            ------------------- field in this struct
[INFO] [stdout] 15 |     config: Arc<SmartDnsConfig>,
[INFO] [stdout]    |     ^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: associated items `query_servers`, `query_servers_concurrent`, and `query_single_server_static` are never used
[INFO] [stdout]    --> src/upstream/manager.rs:329:14
[INFO] [stdout]     |
[INFO] [stdout] 105 | impl UpstreamDnsManager {
[INFO] [stdout]     | ----------------------- associated items in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 329 |     async fn query_servers(&self, request: &Message, servers: &[SocketAddr]) -> Result<Message> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 406 |     async fn query_servers_concurrent(&self, request: &Message, servers: &[SocketAddr]) -> Result<Vec<Message>> {
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] ...
[INFO] [stdout] 442 |     async fn query_single_server_static(
[INFO] [stdout]     |              ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `timeout` is never read
[INFO] [stdout]   --> src/upstream/encrypted_dns.rs:22:5
[INFO] [stdout]    |
[INFO] [stdout] 19 | pub struct EncryptedDnsClient {
[INFO] [stdout]    |            ------------------ field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 22 |     timeout: Duration,
[INFO] [stdout]    |     ^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `EncryptedDnsClient` has derived impls for the traits `Debug` and `Clone`, but these are intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `status` is never read
[INFO] [stdout]    --> src/upstream/encrypted_dns.rs:145:5
[INFO] [stdout]     |
[INFO] [stdout] 143 | struct DoHResponse {
[INFO] [stdout]     |        ----------- field in this struct
[INFO] [stdout] 144 |     #[serde(rename = "Status")]
[INFO] [stdout] 145 |     status: Option<i32>,
[INFO] [stdout]     |     ^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DoHResponse` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `name` and `record_type` are never read
[INFO] [stdout]    --> src/upstream/encrypted_dns.rs:154:5
[INFO] [stdout]     |
[INFO] [stdout] 152 | struct DoHAnswer {
[INFO] [stdout]     |        --------- fields in this struct
[INFO] [stdout] 153 |     #[serde(rename = "name")]
[INFO] [stdout] 154 |     name: Option<String>,
[INFO] [stdout]     |     ^^^^
[INFO] [stdout] 155 |     #[serde(rename = "type")]
[INFO] [stdout] 156 |     record_type: Option<i32>,
[INFO] [stdout]     |     ^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `DoHAnswer` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: field `alert_states` is never read
[INFO] [stdout]   --> src/stats/monitor.rs:21:5
[INFO] [stdout]    |
[INFO] [stdout] 13 | pub struct SystemMonitor {
[INFO] [stdout]    |            ------------- field in this struct
[INFO] [stdout] ...
[INFO] [stdout] 21 |     alert_states: AlertStates,
[INFO] [stdout]    |     ^^^^^^^^^^^^
[INFO] [stdout]    |
[INFO] [stdout]    = note: `SystemMonitor` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: fields `cpu_alert_active`, `memory_alert_active`, `dns_success_rate_alert_active`, `cache_hit_rate_alert_active`, and `response_time_alert_active` are never read
[INFO] [stdout]    --> src/stats/monitor.rs:97:5
[INFO] [stdout]     |
[INFO] [stdout]  96 | struct AlertStates {
[INFO] [stdout]     |        ----------- fields in this struct
[INFO] [stdout]  97 |     cpu_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^
[INFO] [stdout]  98 |     memory_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]  99 |     dns_success_rate_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 100 |     cache_hit_rate_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 101 |     response_time_alert_active: bool,
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `AlertStates` has a derived impl for the trait `Debug`, but this is intentionally ignored during dead code analysis
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: comparison is useless due to type limits
[INFO] [stdout]    --> src/config/mod.rs:186:29
[INFO] [stdout]     |
[INFO] [stdout] 186 |             if port == 0 || port > 65535 {
[INFO] [stdout]     |                             ^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_comparisons)]` on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:321:15
[INFO] [stdout]     |
[INFO] [stdout] 321 |         stats.update_system_stats(200 * 1024 * 1024, 45.0, 25.0);
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_performance_metrics` found for struct `tokio::sync::RwLockReadGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:246:25
[INFO] [stdout]     |
[INFO] [stdout] 246 |     let metrics = stats.get_performance_metrics();
[INFO] [stdout]     |                         ^^^^^^^^^^^^^^^^^^^^^^^ method not found in `tokio::sync::RwLockReadGuard<'_, StatsManager>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:133:13
[INFO] [stdout]     |
[INFO] [stdout] 133 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout]     = note: `#[warn(unused_must_use)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 133 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:159:13
[INFO] [stdout]     |
[INFO] [stdout] 159 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 159 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused `std::result::Result` that must be used
[INFO] [stdout]    --> src/launcher/mod.rs:198:13
[INFO] [stdout]     |
[INFO] [stdout] 198 |             shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: this `Result` may be an `Err` variant, which should be handled
[INFO] [stdout] help: use `let _ = ...` to ignore the resulting value
[INFO] [stdout]     |
[INFO] [stdout] 198 |             let _ = shutdown_clone.trigger_shutdown().await;
[INFO] [stdout]     |             +++++++
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `perform_health_checks` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:324:13
[INFO] [stdout]     |
[INFO] [stdout] 324 |     monitor.perform_health_checks().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `perform_health_check` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 324 -     monitor.perform_health_checks().await;
[INFO] [stdout] 324 +     monitor.perform_health_check().await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `monitor_interval_seconds`
[INFO] [stdout]    --> examples/integration_test_demo.rs:257:9
[INFO] [stdout]     |
[INFO] [stdout] 257 |         monitor_interval_seconds: 1,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^^^ `MonitorConfig` does not have this field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `check_interval`, `cpu_threshold`, `memory_threshold`, `dns_success_rate_threshold`, `cache_hit_rate_threshold` ... and 2 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `cpu_alert_threshold`
[INFO] [stdout]    --> examples/integration_test_demo.rs:258:9
[INFO] [stdout]     |
[INFO] [stdout] 258 |         cpu_alert_threshold: 50.0, // 降低阈值以触发告警
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 258 -         cpu_alert_threshold: 50.0, // 降低阈值以触发告警
[INFO] [stdout] 258 +         cpu_threshold: 50.0, // 降低阈值以触发告警
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0560]: struct `MonitorConfig` has no field named `memory_alert_threshold`
[INFO] [stdout]    --> examples/integration_test_demo.rs:259:9
[INFO] [stdout]     |
[INFO] [stdout] 259 |         memory_alert_threshold: 40.0,
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout] help: a field with a similar name exists
[INFO] [stdout]     |
[INFO] [stdout] 259 -         memory_alert_threshold: 40.0,
[INFO] [stdout] 259 +         memory_threshold: 40.0,
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:263:23
[INFO] [stdout]     |
[INFO] [stdout] 263 |     let mut monitor = SystemMonitor::new(stats_manager.clone(), monitor_config);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^ --------------------- unexpected argument #1 of type `Arc<tokio::sync::RwLock<StatsManager>>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/stats/monitor.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn new(config: MonitorConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 263 -     let mut monitor = SystemMonitor::new(stats_manager.clone(), monitor_config);
[INFO] [stdout] 263 +     let mut monitor = SystemMonitor::new(monitor_config);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `check_alert_conditions` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:325:13
[INFO] [stdout]     |
[INFO] [stdout] 325 |     monitor.check_alert_conditions().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_current_health_status` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:327:33
[INFO] [stdout]     |
[INFO] [stdout] 327 |     let health_status = monitor.get_current_health_status();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_current_metrics` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 327 -     let health_status = monitor.get_current_health_status();
[INFO] [stdout] 327 +     let health_status = monitor.get_current_metrics();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: unused variable: `dns_server_clone`
[INFO] [stdout]    --> src/reliable_main.rs:110:9
[INFO] [stdout]     |
[INFO] [stdout] 110 |     let dns_server_clone = dns_server.clone();
[INFO] [stdout]     |         ^^^^^^^^^^^^^^^^ help: if this is intentional, prefix it with an underscore: `_dns_server_clone`
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(unused_variables)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:336:15
[INFO] [stdout]     |
[INFO] [stdout] 336 |         stats.update_system_stats(800 * 1024 * 1024, 85.0, 75.0); // 高CPU和内存使用率
[INFO] [stdout]     |               ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `perform_health_checks` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:339:13
[INFO] [stdout]     |
[INFO] [stdout] 339 |     monitor.perform_health_checks().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `perform_health_check` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 339 -     monitor.perform_health_checks().await;
[INFO] [stdout] 339 +     monitor.perform_health_check().await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_network_connectivity` is never used
[INFO] [stdout]    --> src/reliable_main.rs:216:10
[INFO] [stdout]     |
[INFO] [stdout] 216 | async fn test_network_connectivity() -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout]     = note: `#[warn(dead_code)]` (part of `#[warn(unused)]`) on by default
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: function `test_dns_resolution` is never used
[INFO] [stdout]    --> src/reliable_main.rs:237:10
[INFO] [stdout]     |
[INFO] [stdout] 237 | async fn test_dns_resolution() -> bool {
[INFO] [stdout]     |          ^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] warning: method `port` is never used
[INFO] [stdout]    --> src/reliable_dns_server.rs:386:12
[INFO] [stdout]     |
[INFO] [stdout]  27 | impl ReliableDnsServer {
[INFO] [stdout]     | ---------------------- method in this implementation
[INFO] [stdout] ...
[INFO] [stdout] 386 |     pub fn port(&self) -> u16 {
[INFO] [stdout]     |            ^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0308, E0432, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `check_alert_conditions` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:340:13
[INFO] [stdout]     |
[INFO] [stdout] 340 |     monitor.check_alert_conditions().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_unacknowledged_alerts` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:342:26
[INFO] [stdout]     |
[INFO] [stdout] 342 |     let alerts = monitor.get_unacknowledged_alerts();
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `perform_health_checks` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:266:13
[INFO] [stdout]     |
[INFO] [stdout] 266 |     monitor.perform_health_checks().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `perform_health_check` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 266 -     monitor.perform_health_checks().await;
[INFO] [stdout] 266 +     monitor.perform_health_check().await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:357:19
[INFO] [stdout]     |
[INFO] [stdout] 357 |             stats.record_dns_query(success, response_time, "A");
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "cache_demo") due to 39 previous errors
[INFO] [stdout] error[E0599]: no method named `perform_health_checks` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:361:13
[INFO] [stdout]     |
[INFO] [stdout] 361 |     monitor.perform_health_checks().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `perform_health_check` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 361 -     monitor.perform_health_checks().await;
[INFO] [stdout] 361 +     monitor.perform_health_check().await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `check_alert_conditions` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:362:13
[INFO] [stdout]     |
[INFO] [stdout] 362 |     monitor.check_alert_conditions().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_current_health_status` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:364:33
[INFO] [stdout]     |
[INFO] [stdout] 364 |     let health_status = monitor.get_current_health_status();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_current_metrics` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 364 -     let health_status = monitor.get_current_health_status();
[INFO] [stdout] 364 +     let health_status = monitor.get_current_metrics();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_unacknowledged_alerts` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:377:32
[INFO] [stdout]     |
[INFO] [stdout] 377 |     let unack_alerts = monitor.get_unacknowledged_alerts();
[INFO] [stdout]     |                                ^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `check_alert_conditions` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:267:13
[INFO] [stdout]     |
[INFO] [stdout] 267 |     monitor.check_alert_conditions().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `acknowledge_alert` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:382:36
[INFO] [stdout]     |
[INFO] [stdout] 382 |         let acknowledged = monitor.acknowledge_alert(&alert.id);
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_unacknowledged_alerts` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:390:36
[INFO] [stdout]     |
[INFO] [stdout] 390 |     let remaining_alerts = monitor.get_unacknowledged_alerts();
[INFO] [stdout]     |                                    ^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:402:23
[INFO] [stdout]     |
[INFO] [stdout] 402 |     let mut monitor = SystemMonitor::new(stats_manager.clone(), config);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^ --------------------- unexpected argument #1 of type `Arc<tokio::sync::RwLock<StatsManager>>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/stats/monitor.rs:106:12
[INFO] [stdout]     |
[INFO] [stdout] 106 |     pub fn new(config: MonitorConfig) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 402 -     let mut monitor = SystemMonitor::new(stats_manager.clone(), config);
[INFO] [stdout] 402 +     let mut monitor = SystemMonitor::new(config);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:418:19
[INFO] [stdout]     |
[INFO] [stdout] 418 |             stats.record_dns_query(success, response_time, query_type);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Block` found for enum `DomainCategory` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:426:38
[INFO] [stdout]     |
[INFO] [stdout] 426 |                 4 => DomainCategory::Block,       // 20%
[INFO] [stdout]     |                                      ^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no variant or associated item named `Default` found for enum `DomainCategory` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:427:38
[INFO] [stdout]     |
[INFO] [stdout] 427 |                 _ => DomainCategory::Default,
[INFO] [stdout]     |                                      ^^^^^^^ variant or associated item not found in `DomainCategory`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_routing_decision` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:431:19
[INFO] [stdout]     |
[INFO] [stdout] 431 |             stats.record_routing_decision(&category, &rule_name, confidence);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^^ method not found in `tokio::sync::RwLockWriteGuard<'_, StatsManager>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this method takes 3 arguments but 4 arguments were supplied
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:446:23
[INFO] [stdout]     |
[INFO] [stdout] 446 |                 stats.record_upstream_query(name, addr, success, response_time);
[INFO] [stdout]     |                       ^^^^^^^^^^^^^^^^^^^^^ ---- unexpected argument #1 of type `&&str`
[INFO] [stdout]     |
[INFO] [stdout] note: method defined here
[INFO] [stdout]    --> src/stats/metrics.rs:248:12
[INFO] [stdout]     |
[INFO] [stdout] 248 |     pub fn record_upstream_query(&mut self, is_direct: bool, server: &str, response_time: Duration) {
[INFO] [stdout]     |            ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 446 -                 stats.record_upstream_query(name, addr, success, response_time);
[INFO] [stdout] 446 +                 stats.record_upstream_query(addr, success, response_time);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_current_health_status` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:269:33
[INFO] [stdout]     |
[INFO] [stdout] 269 |     let health_status = monitor.get_current_health_status();
[INFO] [stdout]     |                                 ^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `get_current_metrics` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 269 -     let health_status = monitor.get_current_health_status();
[INFO] [stdout] 269 +     let health_status = monitor.get_current_metrics();
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_cache_operation` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:458:19
[INFO] [stdout]     |
[INFO] [stdout] 458 |             stats.record_cache_operation(cache_type, hit);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_cache_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:233:5
[INFO] [stdout]     |
[INFO] [stdout] 233 |     pub fn record_cache_stats(&mut self, hits: u64, misses: u64, size: usize, capacity: usize) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_unacknowledged_alerts` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:281:26
[INFO] [stdout]     |
[INFO] [stdout] 281 |     let alerts = monitor.get_unacknowledged_alerts();
[INFO] [stdout]     |                          ^^^^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_ip_validation` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:468:19
[INFO] [stdout]     |
[INFO] [stdout] 468 |             stats.record_ip_validation(success, country, confidence, is_china);
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^^^^^ method not found in `tokio::sync::RwLockWriteGuard<'_, StatsManager>`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 0 arguments but 1 argument was supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:303:28
[INFO] [stdout]     |
[INFO] [stdout] 303 |     let mut port_manager = PortManager::new(vec![1, 2, 3]); // 使用受限端口
[INFO] [stdout]     |                            ^^^^^^^^^^^^^^^^ ------------- unexpected argument of type `Vec<{integer}>`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/system/port_manager.rs:24:12
[INFO] [stdout]     |
[INFO] [stdout]  24 |     pub fn new() -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 303 -     let mut port_manager = PortManager::new(vec![1, 2, 3]); // 使用受限端口
[INFO] [stdout] 303 +     let mut port_manager = PortManager::new(); // 使用受限端口
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `update_system_stats` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:472:15
[INFO] [stdout]     |
[INFO] [stdout] 472 |         stats.update_system_stats(
[INFO] [stdout]     |         ------^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `reset_stats` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:316:5
[INFO] [stdout]     |
[INFO] [stdout] 316 |     pub fn reset_stats(&mut self) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `perform_health_checks` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:480:13
[INFO] [stdout]     |
[INFO] [stdout] 480 |     monitor.perform_health_checks().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `perform_health_check` with a similar name
[INFO] [stdout]     |
[INFO] [stdout] 480 -     monitor.perform_health_checks().await;
[INFO] [stdout] 480 +     monitor.perform_health_check().await;
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `check_alert_conditions` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:481:13
[INFO] [stdout]     |
[INFO] [stdout] 481 |     monitor.check_alert_conditions().await;
[INFO] [stdout]     |             ^^^^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `get_monitor_summary` found for struct `SystemMonitor` in the current scope
[INFO] [stdout]    --> examples/stats_and_monitoring_demo.rs:487:27
[INFO] [stdout]     |
[INFO] [stdout] 487 |     let summary = monitor.get_monitor_summary().await;
[INFO] [stdout]     |                           ^^^^^^^^^^^^^^^^^^^ method not found in `SystemMonitor`
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0599]: no method named `record_dns_query` found for struct `tokio::sync::RwLockWriteGuard<'_, StatsManager>` in the current scope
[INFO] [stdout]    --> examples/integration_test_demo.rs:333:19
[INFO] [stdout]     |
[INFO] [stdout] 333 |             stats.record_dns_query(success, response_time, "A");
[INFO] [stdout]     |                   ^^^^^^^^^^^^^^^^
[INFO] [stdout]     |
[INFO] [stdout] help: there is a method `record_query` with a similar name, but with different arguments
[INFO] [stdout]    --> src/stats/metrics.rs:181:5
[INFO] [stdout]     |
[INFO] [stdout] 181 |     pub fn record_query(&mut self, success: bool, response_time: Duration) {
[INFO] [stdout]     |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0061]: this function takes 1 argument but 2 arguments were supplied
[INFO] [stdout]    --> examples/integration_test_demo.rs:342:21
[INFO] [stdout]     |
[INFO] [stdout] 342 |     let dns_cache = DnsCache::new(10000, 300);
[INFO] [stdout]     |                     ^^^^^^^^^^^^^        --- unexpected argument #2 of type `{integer}`
[INFO] [stdout]     |
[INFO] [stdout] note: associated function defined here
[INFO] [stdout]    --> src/cache/lru_cache.rs:56:12
[INFO] [stdout]     |
[INFO] [stdout]  56 |     pub fn new(capacity: usize) -> Self {
[INFO] [stdout]     |            ^^^
[INFO] [stdout] help: remove the extra argument
[INFO] [stdout]     |
[INFO] [stdout] 342 -     let dns_cache = DnsCache::new(10000, 300);
[INFO] [stdout] 342 +     let dns_cache = DnsCache::new(10000);
[INFO] [stdout]     |
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_queries` on type `StatsSummary`
[INFO] [stdout]    --> examples/integration_test_demo.rs:360:35
[INFO] [stdout]     |
[INFO] [stdout] 360 |     info!("  DNS查询总数: {}", report.dns_queries.total_queries);
[INFO] [stdout]     |                                       ^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_queries` on type `StatsSummary`
[INFO] [stdout]    --> examples/integration_test_demo.rs:362:19
[INFO] [stdout]     |
[INFO] [stdout] 362 |         if report.dns_queries.total_queries > 0 {
[INFO] [stdout]     |                   ^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_queries` on type `StatsSummary`
[INFO] [stdout]    --> examples/integration_test_demo.rs:363:20
[INFO] [stdout]     |
[INFO] [stdout] 363 |             report.dns_queries.successful_queries as f64 / report.dns_queries.total_queries as f64 * 100.0
[INFO] [stdout]     |                    ^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_queries` on type `StatsSummary`
[INFO] [stdout]    --> examples/integration_test_demo.rs:363:67
[INFO] [stdout]     |
[INFO] [stdout] 363 |             report.dns_queries.successful_queries as f64 / report.dns_queries.total_queries as f64 * 100.0
[INFO] [stdout]     |                                                                   ^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] error[E0609]: no field `dns_queries` on type `StatsSummary`
[INFO] [stdout]    --> examples/integration_test_demo.rs:368:39
[INFO] [stdout]     |
[INFO] [stdout] 368 |     info!("  平均响应时间: {:.1}ms", report.dns_queries.avg_response_time_ms);
[INFO] [stdout]     |                                             ^^^^^^^^^^^ unknown field
[INFO] [stdout]     |
[INFO] [stdout]     = note: available fields are: `uptime_seconds`, `total_queries`, `success_rate`, `avg_response_time_ms`, `queries_per_second` ... and 3 others
[INFO] [stdout] 
[INFO] [stdout] 
[INFO] [stdout] Some errors have detailed explanations: E0061, E0277, E0308, E0433, E0560, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "integration_test_demo") due to 44 previous errors; 4 warnings emitted
[INFO] [stdout] Some errors have detailed explanations: E0061, E0432, E0560, E0599, E0609.
[INFO] [stdout] 
[INFO] [stdout] For more information about an error, try `rustc --explain E0061`.
[INFO] [stdout] 
[INFO] [stderr] error: could not compile `smart-dns-server` (example "stats_and_monitoring_demo") due to 72 previous errors; 1 warning emitted
[INFO] running `Command { std: "docker" "inspect" "354de0b60702c3bb8356f430f448c89119b9aeb34c72a287ce526b10f69e708c", kill_on_drop: false }`
[INFO] running `Command { std: "docker" "rm" "-f" "354de0b60702c3bb8356f430f448c89119b9aeb34c72a287ce526b10f69e708c", kill_on_drop: false }`
[INFO] [stdout] 354de0b60702c3bb8356f430f448c89119b9aeb34c72a287ce526b10f69e708c
